コード例 #1
0
        static void IdentifyStaleSolutions(string targetDirectory)
        {
            ConcurrentDictionary <string, string[]> solutionsWithStaleProjects = new ConcurrentDictionary <string, string[]>();
            IEnumerable <string> slnsInDirectory = Directory.EnumerateFiles(targetDirectory, "*.sln", SearchOption.AllDirectories);

            Parallel.ForEach(slnsInDirectory, slnFile =>
            {
                string[] staleProjectsInSolution = StaleDependencies.IdentifyStaleDependencies(slnFile).ToArray();

                if (staleProjectsInSolution.Any())
                {
                    solutionsWithStaleProjects.TryAdd(slnFile, staleProjectsInSolution);
                }
            }
                             );

            foreach (KeyValuePair <string, string[]> solutionWithStaleProjects in solutionsWithStaleProjects.OrderBy(kvp => kvp.Key))
            {
                Console.WriteLine($"== {solutionWithStaleProjects.Key} {solutionWithStaleProjects.Value.Length} == ");
                foreach (string result in solutionWithStaleProjects.Value)
                {
                    Console.WriteLine(result);
                }
                Console.WriteLine();
            }
        }
コード例 #2
0
        static void ModifyStaleSolutions(string targetDirectory)
        {
            IEnumerable <string> slnsInDirectory = Directory.EnumerateFiles(targetDirectory, "*.sln", SearchOption.AllDirectories);

            Parallel.ForEach(slnsInDirectory, slnFile =>
            {
                string[] staleProjects = StaleDependencies.IdentifyStaleDependencies(slnFile).ToArray();

                if (staleProjects.Any())
                {
                    Console.WriteLine($"Modifying {slnFile}");
                    SolutionModificationUtilities.RemoveProjectsFromSolution(slnFile, staleProjects);
                }
            }
                             );
        }
コード例 #3
0
        static void RemoveMissingDependenciesFromSolutions(string targetDirectory)
        {
            IEnumerable <string> slnsInDirectory = Directory.EnumerateFiles(targetDirectory, "*.sln", SearchOption.AllDirectories);
            ConcurrentDictionary <string, string> missingGuidLookup = new ConcurrentDictionary <string, string>(StringComparer.InvariantCultureIgnoreCase);

            //Parallel.ForEach(slnsInDirectory, slnFile =>
            foreach (string slnFile in slnsInDirectory)
            {
                string[] staleProjects = StaleDependencies.IdentifyMissingDependencies(slnFile).ToArray();

                if (staleProjects.Any())
                {
                    // Because the dependency is missing we must parse the project for the project Guid
                    string[] guidsToRemove = StaleDependencies.GetGuidsForProjects(slnFile, staleProjects, missingGuidLookup).ToArray();
                    Console.WriteLine($"Modifying {slnFile}");
                    SolutionModificationUtilities.RemoveProjectsByGuidFromSolution(slnFile, guidsToRemove);
                }
            }
            //);
        }