@@ -18,35 +18,6 @@ public CsProjUpdateResult UpdateCsProjPropertyValues(string csProjFilePath)
18
18
19
19
var propertyGroups = csProjXmlDoc . Descendants ( "PropertyGroup" ) . ToList ( ) ;
20
20
21
- var targetFrameworkUpdates = new CsprojUpdateTracker (
22
- CsprojUpdateTracker . TargetFramework ,
23
- UpdateOptions . DotNetTargetFramework ,
24
- addIfElementNotFound : false ,
25
- skipStartsWithValues : [ "netstandard" ] ) ; //Project is set to .NET Standard are there for a reason, don't change it
26
- var langUpdates = new CsprojUpdateTracker (
27
- CsprojUpdateTracker . LangVersion ,
28
- UpdateOptions . DotNetLangVersion ,
29
- addIfElementNotFound : true ) ;
30
- var enableNETAnalyzersUpdates = new CsprojUpdateTracker (
31
- CsprojUpdateTracker . EnableNETAnalyzers ,
32
- UpdateOptions . EnableNetAnalyzers . ToString ( ) . ToLower ( ) ,
33
- addIfElementNotFound : true ) ;
34
- var enforceCodeStyleInBuildUpdates = new CsprojUpdateTracker (
35
- CsprojUpdateTracker . EnforceCodeStyleInBuild ,
36
- UpdateOptions . EnforceCodeStyleInBuild . ToString ( ) . ToLower ( ) ,
37
- addIfElementNotFound : true ) ;
38
- var nuGetAuditUpdates = new CsprojUpdateTracker (
39
- CsprojUpdateTracker . NuGetAudit ,
40
- UpdateOptions . NugetAudit . NuGetAudit . ToString ( ) . ToLower ( ) ,
41
- addIfElementNotFound : true ) ;
42
- var nugetAuditModeUpdates = new CsprojUpdateTracker (
43
- CsprojUpdateTracker . NuGetAuditMode ,
44
- UpdateOptions . NugetAudit . AuditMode . ToString ( ) . ToLower ( ) ,
45
- addIfElementNotFound : true ) ;
46
- var nugetAuditLevelUpdates = new CsprojUpdateTracker (
47
- CsprojUpdateTracker . NuGetAuditLevel ,
48
- UpdateOptions . NugetAudit . AuditLevel ,
49
- addIfElementNotFound : true ) ;
50
21
51
22
UpdateOrAddCsProjValues (
52
23
csProjXmlDoc ,
@@ -77,6 +48,78 @@ public CsProjUpdateResult UpdateCsProjPropertyValues(string csProjFilePath)
77
48
return new CsProjUpdateResult ( csProjFilePath , langVersionUpdateType , targetFrameworkUpdate ) ;
78
49
}
79
50
51
+ private ImmutableArray < ImmutableArray < CsprojUpdateGroupTracker > > DetermineProjectUpdateGroups ( )
52
+ {
53
+ var buidler = ImmutableArray . CreateBuilder < ImmutableArray < CsprojUpdateGroupTracker > > ( ) ;
54
+
55
+ if ( UpdateOptions . DotNetVersioningOptions is object )
56
+ {
57
+ var targetFrameworkUpdates = new CsprojUpdateTracker (
58
+ CsprojUpdateTracker . TargetFramework ,
59
+ UpdateOptions . DotNetVersioningOptions . DotNetTargetFramework ,
60
+ addIfElementNotFound : false ,
61
+ skipStartsWithValues : [ "netstandard" ] ) ; //Project is set to .NET Standard are there for a reason, don't change it
62
+
63
+ var langUpdates = new CsprojUpdateTracker (
64
+ CsprojUpdateTracker . LangVersion ,
65
+ UpdateOptions . DotNetVersioningOptions . DotNetLangVersion ,
66
+ addIfElementNotFound : true ) ;
67
+
68
+ var warningsAsErrorsUpdates = new CsprojUpdateTracker (
69
+ CsprojUpdateTracker . TreatWarningsAsErrors ,
70
+ UpdateOptions . DotNetVersioningOptions . TreatWarningsAsErrors . ToString ( ) . ToLower ( ) ,
71
+ addIfElementNotFound : true ) ;
72
+
73
+ var theseBuilder = ImmutableArray . CreateBuilder < CsprojUpdateGroupTracker > ( ) ;
74
+
75
+ theseBuilder . Add (
76
+ new CsprojUpdateGroupTracker ( CsprojUpdateGroupTracker . NotFoundActionType . DoNothing ,
77
+ [
78
+ targetFrameworkUpdates ,
79
+ ] ) ) ;
80
+
81
+ theseBuilder . Add (
82
+ new CsprojUpdateGroupTracker ( CsprojUpdateGroupTracker . NotFoundActionType . AddElementToFirstPropertyGroup ,
83
+ [
84
+ langUpdates ,
85
+ warningsAsErrorsUpdates ,
86
+ ] ) ) ;
87
+
88
+ buidler . Add ( theseBuilder . ToImmutableArray ( ) ) ;
89
+ }
90
+
91
+ if ( UpdateOptions . DotNetAnalyzerOptions is object )
92
+ {
93
+ var enableNETAnalyzersUpdates = new CsprojUpdateTracker (
94
+ CsprojUpdateTracker . EnableNETAnalyzers ,
95
+ UpdateOptions . DotNetAnalyzerOptions . EnableNetAnalyzers . ToString ( ) . ToLower ( ) ,
96
+ addIfElementNotFound : true ) ;
97
+
98
+ var enforceCodeStyleInBuildUpdates = new CsprojUpdateTracker (
99
+ CsprojUpdateTracker . EnforceCodeStyleInBuild ,
100
+ UpdateOptions . DotNetAnalyzerOptions . EnforceCodeStyleInBuild . ToString ( ) . ToLower ( ) ,
101
+ addIfElementNotFound : true ) ;
102
+
103
+ var theseBuilder = ImmutableArray . CreateBuilder < CsprojUpdateGroupTracker > ( ) ;
104
+ }
105
+
106
+ var nuGetAuditUpdates = new CsprojUpdateTracker (
107
+ CsprojUpdateTracker . NuGetAudit ,
108
+ UpdateOptions . NugetAudit . NuGetAudit . ToString ( ) . ToLower ( ) ,
109
+ addIfElementNotFound : true ) ;
110
+ var nugetAuditModeUpdates = new CsprojUpdateTracker (
111
+ CsprojUpdateTracker . NuGetAuditMode ,
112
+ UpdateOptions . NugetAudit . AuditMode . ToString ( ) . ToLower ( ) ,
113
+ addIfElementNotFound : true ) ;
114
+ var nugetAuditLevelUpdates = new CsprojUpdateTracker (
115
+ CsprojUpdateTracker . NuGetAuditLevel ,
116
+ UpdateOptions . NugetAudit . AuditLevel ,
117
+ addIfElementNotFound : true ) ;
118
+
119
+
120
+ return buidler . ToImmutableArray ( ) ;
121
+ }
122
+
80
123
private void UpdateOrAddCsProjValues ( XDocument csProjXmlDoc , List < XElement > propertyGroupsElements , params CsprojUpdateGroupTracker [ ] updateGroups )
81
124
{
82
125
//Separate updates into groups
@@ -245,6 +288,7 @@ private class CsprojUpdateTracker
245
288
public const string TargetFramework = "TargetFramework" ;
246
289
public const string TargetFrameworks = "TargetFrameworks" ;
247
290
public const string LangVersion = "LangVersion" ;
291
+ public const string TreatWarningsAsErrors = "TreatWarningsAsErrors" ;
248
292
public const string EnableNETAnalyzers = "EnableNETAnalyzers" ;
249
293
public const string EnforceCodeStyleInBuild = "EnforceCodeStyleInBuild" ;
250
294
public const string NuGetAudit = "NuGetAudit" ;
0 commit comments