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(); } }
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); } } ); }