public PackagesConfig CreateNewPackagesConfig(VerifiedFolder projectDirectory)
        {
            string[] lines = new string[]
            {
                @"<?xml version=""1.0"" encoding=""utf-8""?>",
                "<packages>",
                "</packages>"
            };

            var filePath = projectDirectory.FullName + @"\packages.config";

            File.WriteAllLines(filePath, lines);
            return(_nugetReader.TryReadPackagesConfig(projectDirectory));
        }
        private void ExpandGraphNode(SolutionGraph graph, ProjectGraphNode node)
        {
            if (node.IsAlreadyExpanded)
            {
                return;
            }

            foreach (var projectRef in node.Project.ProjectReferences)
            {
                var projectRefNode = TryCreateGraphNode(graph, projectRef);
                if (projectRefNode != null)
                {
                    node.ProjectRequirements.Add(projectRefNode);
                }
            }

            var nugetPackages = _nugetReferenceReader.TryReadPackagesConfig(node.Project.ProjectDirectory);

            foreach (var fileReference in node.Project.FileReferences)
            {
                var nugetPackage = nugetPackages?.FindPackage(fileReference.Include.ID);
                if (nugetPackage != null)
                {
                    var nugetReference = new NugetReference(node.Project, nugetPackage, fileReference.GetFile(), fileReference.VersionFromPath ?? VersionWithSuffix.Empty());
                    node.NugetPackageRequirements.Add(nugetReference);
                }
                else
                {
                    var reference = new ReferencedFile(node.Project, fileReference.GetFile(), fileReference.Include.Version);
                    node.FileRequirements.Add(reference);
                }
            }
        }
示例#3
0
        public Problem[] DetectAllSolutionProblems(Solution solution)
        {
            List <Problem> problems      = new List <Problem>();
            var            solutionGraph = _graphBuilder.BuildGraph(solution);

            problems.AddRange(DetectProblems(solutionGraph));
            foreach (var node in solutionGraph.AllNodes.Values)
            {
                problems.AddRange(DetectProblems(node));
                foreach (var nugetRef in node.NugetPackageRequirements)
                {
                    problems.AddRange(DetectProblems(nugetRef));
                }
            }

            foreach (var project in solution.Projects)
            {
                problems.AddRange(DetectProblems(project));

                foreach (var reference in project.FileReferences)
                {
                    problems.AddRange(DetectProblems(reference));
                }

                foreach (var reference in project.ProjectReferences)
                {
                    problems.AddRange(DetectProblems(reference));
                }

                var packagesConfig = _nugetReferenceReader.TryReadPackagesConfig(project.ProjectDirectory);
                if (packagesConfig != null)
                {
                    problems.AddRange(DetectProblems(packagesConfig));
                    foreach (var package in packagesConfig.Packages)
                    {
                        problems.AddRange(DetectProblems(package));
                    }
                }
            }



            return(problems.ToArray());
        }