public static bool RemoveProject(this SlnFile slnFile, string projectPath) { if (string.IsNullOrEmpty(projectPath)) { throw new ArgumentException(); } var projectPathNormalized = PathUtility.GetPathWithDirectorySeparator(projectPath); var projectsToRemove = slnFile.Projects.Where((p) => string.Equals(p.FilePath, projectPathNormalized, StringComparison.OrdinalIgnoreCase)).ToList(); bool projectRemoved = false; if (projectsToRemove.Count == 0) { /*Reporter.Output.WriteLine(string.Format( * CommonLocalizableStrings.ProjectReferenceCouldNotBeFound, * projectPath));*/ } else { foreach (var slnProject in projectsToRemove) { var buildConfigsToRemove = slnFile.ProjectConfigurationsSection.GetPropertySet(slnProject.Id); if (buildConfigsToRemove != null) { slnFile.ProjectConfigurationsSection.Remove(buildConfigsToRemove); } var nestedProjectsSection = slnFile.Sections.GetSection( "NestedProjects", SlnSectionType.PreProcess); if (nestedProjectsSection != null && nestedProjectsSection.Properties.ContainsKey(slnProject.Id)) { nestedProjectsSection.Properties.Remove(slnProject.Id); } slnFile.Projects.Remove(slnProject); /*Reporter.Output.WriteLine( * string.Format(CommonLocalizableStrings.ProjectReferenceRemoved, slnProject.FilePath));*/ } projectRemoved = true; } return(projectRemoved); }
public static bool RemoveProject(this SlnFile slnFile, string projectPath) { if (string.IsNullOrEmpty(projectPath)) { throw new ArgumentException(); } var projectPathNormalized = PathUtility.GetPathWithDirectorySeparator(projectPath); var projectsToRemove = slnFile.Projects.Where((p) => string.Equals(p.FilePath, projectPathNormalized, StringComparison.OrdinalIgnoreCase)).ToList(); bool projectRemoved = false; if (projectsToRemove.Count == 0) { Reporter.Output.WriteLine(string.Format( CommonLocalizableStrings.ProjectNotFoundInTheSolution, projectPath)); } else { foreach (var slnProject in projectsToRemove) { var buildConfigsToRemove = slnFile.ProjectConfigurationsSection.GetPropertySet(slnProject.Id); if (buildConfigsToRemove != null) { slnFile.ProjectConfigurationsSection.Remove(buildConfigsToRemove); } var nestedProjectsSection = slnFile.Sections.GetSection( "NestedProjects", SlnSectionType.PreProcess); if (nestedProjectsSection != null && nestedProjectsSection.Properties.ContainsKey(slnProject.Id)) { nestedProjectsSection.Properties.Remove(slnProject.Id); } slnFile.Projects.Remove(slnProject); Reporter.Output.WriteLine( string.Format(CommonLocalizableStrings.ProjectRemovedFromTheSolution, slnProject.FilePath)); } foreach (var project in slnFile.Projects) { var dependencies = project.Dependencies; if (dependencies == null) { continue; } dependencies.SkipIfEmpty = true; foreach (var removed in projectsToRemove) { dependencies.Properties.Remove(removed.Id); } } projectRemoved = true; } return(projectRemoved); }