diff --git a/DotNetSolutionTools.Core/WarningsAsErrors.cs b/DotNetSolutionTools.Core/WarningsAsErrors.cs index 6435703..b1d8408 100644 --- a/DotNetSolutionTools.Core/WarningsAsErrors.cs +++ b/DotNetSolutionTools.Core/WarningsAsErrors.cs @@ -37,7 +37,26 @@ public static class WarningsAsErrors return projectsMissingTreatWarningsAsErrors; } + + public static void AddMissingTreatWarningsAsErrorsToSolution(string solutionFilePath) + { + var solutionFile = SolutionFile.Parse(solutionFilePath); + var csprojList = SolutionProjectParity.GetCSharpProjectObjectsFromSolutionFile( + solutionFile + ); + var projectsMissingImplicitUsings = FindCSharpProjectsMissingTreatWarningsAsErrors(csprojList); + AddMissingTreatWarningsAsErrors(projectsMissingImplicitUsings); + } + public static void RemoveAllTreatWarningsAsErrorsInSolution(string solutionFilePath) + { + var solutionFile = SolutionFile.Parse(solutionFilePath); + var csprojList = SolutionProjectParity.GetCSharpProjectObjectsFromSolutionFile( + solutionFile + ); + RemoveTreatWarningsAsErrors(csprojList); + } + public static void AddMissingTreatWarningsAsErrors( List projectsMissingImplicitUsings ) @@ -53,6 +72,24 @@ public static class WarningsAsErrors } } } + + public static void RemoveTreatWarningsAsErrors( + List projectList + ) + { + foreach (var project in projectList) + { + var treatWarningsAsErrors = project.PropertyGroups + .SelectMany(x => x.Properties) + .FirstOrDefault(x => x.Name == "TreatWarningsAsErrors"); + if (treatWarningsAsErrors is not null) + { + treatWarningsAsErrors.Parent.RemoveChild(treatWarningsAsErrors); + project.Save(); + FormatCsproj.FormatCsprojFile(project.FullPath); + } + } + } private static bool ProjectIsMissingTreatWarningsAsErrors(ProjectRootElement project) {