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