Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 39b643f

Browse files
authored
Re-partition MSBuild test groups (#22885)
This changes a tests partitioning scheme of coreclr tests in several different ways: 1. Make the test groups are of equal (to some extent) sizes keeping the number of tests in one group less than 1000; 2. As a resulf of 1) this increases a number of groups needed for Pri0 tests to 3 and decreases a number of groups for Pri1 tests to 10; 3. This also changes a way of tests partitioning scheme is defined - instead of explicitly specifying MSBuild Include-patterns this defines a boundaries between test groups in a form of _StartsWith ItemGroup. Then I use StringComparer.Ordinal to pick tests that belong to a particular group.
1 parent 0625973 commit 39b643f

File tree

3 files changed

+86
-204
lines changed

3 files changed

+86
-204
lines changed

build-test.cmd

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -296,19 +296,18 @@ REM See https://github.com/Microsoft/msbuild/issues/2993
296296

297297
set __SkipPackageRestore=false
298298
set __SkipTargetingPackBuild=false
299-
set __BuildLoopCount=2
300-
set __TestGroupToBuild=1
299+
set __NumberOfTestGroups=3
301300

302-
if %__Priority% GTR 0 (set __BuildLoopCount=16&set __TestGroupToBuild=2)
303-
echo %__MsgPrefix%Building tests group %__TestGroupToBuild% with %__BuildLoopCount% subgroups
301+
if %__Priority% GTR 0 (set __NumberOfTestGroups=10)
302+
echo %__MsgPrefix%Building tests divided into %__NumberOfTestGroups% test groups
304303

305-
for /l %%G in (1, 1, %__BuildLoopCount%) do (
304+
for /l %%G in (1, 1, %__NumberOfTestGroups%) do (
306305

307306
set __MsbuildLog=/flp:Verbosity=normal;LogFile="%__BuildLog%";Append=!__AppendToLog!
308307
set __MsbuildWrn=/flp1:WarningsOnly;LogFile="%__BuildWrn%";Append=!__AppendToLog!
309308
set __MsbuildErr=/flp2:ErrorsOnly;LogFile="%__BuildErr%";Append=!__AppendToLog!
310309

311-
set TestBuildSlice=%%G
310+
set __TestGroupToBuild=%%G
312311
echo Running: msbuild %__ProjectDir%\tests\build.proj !__MsbuildLog! !__MsbuildWrn! !__MsbuildErr! %TargetsWindowsMsbuildArg% %__msbuildArgs% !__PriorityArg! %__UnprocessedBuildArgs%
313312

314313
call "%__ProjectDir%\dotnet.cmd" msbuild %__ProjectDir%\tests\build.proj !__MsbuildLog! !__MsbuildWrn! !__MsbuildErr! %TargetsWindowsMsbuildArg% %__msbuildArgs% !__PriorityArg! %__UnprocessedBuildArgs%

build-test.sh

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -312,22 +312,21 @@ build_MSBuild_projects()
312312
# __SkipPackageRestore and __SkipTargetingPackBuild used to control build by tests/src/dirs.proj
313313
export __SkipPackageRestore=false
314314
export __SkipTargetingPackBuild=false
315-
export __BuildLoopCount=2
316-
export __TestGroupToBuild=1
315+
export __NumberOfTestGroups=3
316+
317317
__AppendToLog=false
318318

319319
if [ -n "$__priority1" ]; then
320-
export __BuildLoopCount=16
321-
export __TestGroupToBuild=2
320+
export __NumberOfTestGroups=10
322321
fi
323322

324-
for (( slice=1 ; slice <= __BuildLoopCount; slice = slice + 1 ))
323+
for (( testGroupToBuild=1 ; testGroupToBuild <= __NumberOfTestGroups; testGroupToBuild = testGroupToBuild + 1 ))
325324
do
326325
__msbuildLog="\"/flp:Verbosity=normal;LogFile=${__BuildLog};Append=${__AppendToLog}\""
327326
__msbuildWrn="\"/flp1:WarningsOnly;LogFile=${__BuildWrn};Append=${__AppendToLog}\""
328327
__msbuildErr="\"/flp2:ErrorsOnly;LogFile=${__BuildErr};Append=${__AppendToLog}\""
329328

330-
export TestBuildSlice=$slice
329+
export __TestGroupToBuild=$testGroupToBuild
331330

332331
# Generate build command
333332
buildArgs=("/nologo" "/verbosity:minimal" "/clp:Summary")
@@ -341,7 +340,7 @@ build_MSBuild_projects()
341340
buildArgs+=("${__UnprocessedBuildArgs[@]}")
342341

343342
nextCommand="\"$__ProjectRoot/dotnet.sh\" msbuild ${buildArgs[@]}"
344-
echo "Building step '$stepName' slice=$slice via $nextCommand"
343+
echo "Building step '$stepName' testGroupToBuild=$testGroupToBuild via $nextCommand"
345344
eval $nextCommand
346345

347346
# Make sure everything is OK

tests/src/dirs.proj

Lines changed: 75 additions & 191 deletions
Original file line numberDiff line numberDiff line change
@@ -33,218 +33,102 @@
3333
<DisabledProjects Include="Loader\classloader\generics\GenericMethods\VSW491668.csproj" /> <!-- issue 5501 -->
3434
</ItemGroup>
3535

36-
<!-- Test build is divided in slices which can be created within Test Group
37-
Priority 0 tests are build using Test Group 1 with 2 subgroups or slices -->
38-
39-
<ItemGroup Condition="$(__TestGroupToBuild) == '1' And $(TestBuildSlice) == '1'">
40-
<Project Include="*\**\*.csproj" Exclude="@(DisabledProjects)">
41-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
42-
</Project>
36+
<ItemGroup>
37+
<AllProjects Include="*\**\*.csproj" Exclude="@(DisabledProjects)" />
38+
<AllProjects Include="*\**\*.ilproj" Exclude="@(DisabledProjects)" />
4339
</ItemGroup>
4440

45-
<ItemGroup Condition="$(__TestGroupToBuild) == '1' And $(TestBuildSlice) == '2'">
46-
<Project Include="*\**\*.ilproj" Exclude="@(DisabledProjects)">
47-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
48-
</Project>
49-
</ItemGroup>
41+
<!-- All the test projects are partitioned into the test groups as defined below.
42+
Each of the test groups is meant to be built by a separate MSBuild invocation with specified $(__TestGroupToBuild) property. -->
5043

51-
<!-- Test build is divided in slices which can be created within Test Group
52-
Priority 1 or higher tests are build using Test Group 2 with 16 subgroups or slices -->
44+
<ItemGroup Condition=" '$(CLRTestPriorityToBuild)' == '0' ">
45+
<!-- Group number k consists of all the test projects P such that _GroupStartsWith(k) <= P.Identity < _GroupStartsWith(k+1).
46+
In other words, ItemGroup _GroupStartsWith defines boundaries between the test groups. -->
5347

54-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '1')">
55-
<Project Include="baseservices\**\*.csproj" Exclude="@(DisabledProjects)">
56-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
57-
</Project>
58-
<Project Include="Common\**\*.csproj" Exclude="@(DisabledProjects)">
59-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
60-
</Project>
61-
<Project Include="baseservices\**\*.ilproj" Exclude="@(DisabledProjects)">
62-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
63-
</Project>
64-
<Project Include="Common\**\*.ilproj" Exclude="@(DisabledProjects)">
65-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
66-
</Project>
67-
</ItemGroup>
48+
<!-- MSBuild does not allow specifying an item with empty identity but if it was possible Group number 1 would be defined as follows:
6849
69-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '2')">
70-
<Project Include="CoreMangLib\**\*.csproj" Exclude="@(DisabledProjects)">
71-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
72-
</Project>
73-
<Project Include="CoreMangLib\**\*.ilproj" Exclude="@(DisabledProjects)">
74-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
75-
</Project>
76-
</ItemGroup>
50+
<_GroupStartsWith Include="">
51+
<GroupNumber>1</GroupNumber>
52+
</_GroupStartsWith> -->
7753

78-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '3')">
79-
<Project Include="E*\**\*.csproj" Exclude="@(DisabledProjects)">
80-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
81-
</Project>
82-
<Project Include="GC\**\*.csproj" Exclude="@(DisabledProjects)">
83-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
84-
</Project>
85-
<Project Include="hosting\**\*.csproj" Exclude="@(DisabledProjects)">
86-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
87-
</Project>
88-
<Project Include="Interop\**\*.csproj" Exclude="@(DisabledProjects)">
89-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
90-
</Project>
91-
<Project Include="E*\**\*.ilproj" Exclude="@(DisabledProjects)">
92-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
93-
</Project>
94-
<Project Include="GC\**\*.ilproj" Exclude="@(DisabledProjects)">
95-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
96-
</Project>
97-
<Project Include="hosting\**\*.ilproj" Exclude="@(DisabledProjects)">
98-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
99-
</Project>
100-
<Project Include="Interop\**\*.ilproj" Exclude="@(DisabledProjects)">
101-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
102-
</Project>
103-
</ItemGroup>
54+
<_GroupStartsWith Include="JIT\Methodical\Boxing\callconv\_relinstance_il.ilproj">
55+
<GroupNumber>2</GroupNumber>
56+
</_GroupStartsWith>
10457

105-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '4')">
106-
<Project Include="JIT\B*\**\*.csproj" Exclude="@(DisabledProjects)">
107-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
108-
</Project>
109-
<Project Include="JIT\C*\**\*.csproj" Exclude="@(DisabledProjects)">
110-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
111-
</Project>
112-
<Project Include="JIT\Directed\**\*.csproj" Exclude="@(DisabledProjects)">
113-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
114-
</Project>
58+
<_GroupStartsWith Include="JIT\Regression\CLR-x86-JIT\V1-M12-Beta2\b35351\b35351.ilproj">
59+
<GroupNumber>3</GroupNumber>
60+
</_GroupStartsWith>
11561
</ItemGroup>
11662

117-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '5')">
118-
<Project Include="JIT\B*\**\*.ilproj" Exclude="@(DisabledProjects)">
119-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
120-
</Project>
121-
<Project Include="JIT\C*\**\*.ilproj" Exclude="@(DisabledProjects)">
122-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
123-
</Project>
124-
<Project Include="JIT\Directed\**\*.ilproj" Exclude="@(DisabledProjects)">
125-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
126-
</Project>
127-
</ItemGroup>
63+
<Error Condition=" '$(CLRTestPriorityToBuild)' == '0' And ($(__TestGroupToBuild) &lt; 1 Or $(__TestGroupToBuild) &gt; 3) " Text="__TestGroupToBuild property must be between 1 and 3 for Pri0." />
12864

129-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '6')">
130-
<Project Include="JIT\Generics\**\*.csproj" Exclude="@(DisabledProjects)">
131-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
132-
</Project>
133-
<Project Include="JIT\*Intrinsics\**\*.csproj" Exclude="@(DisabledProjects)">
134-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
135-
</Project>
136-
<Project Include="JIT\Generics\**\*.ilproj" Exclude="@(DisabledProjects)">
137-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
138-
</Project>
139-
<Project Include="JIT\*Intrinsics\**\*.ilproj" Exclude="@(DisabledProjects)">
140-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
141-
</Project>
142-
</ItemGroup>
65+
<ItemGroup Condition=" '$(CLRTestPriorityToBuild)' == '1' ">
66+
<!-- See above for explanation.
67+
<_GroupStartsWith Include="">
68+
<GroupNumber>1</GroupNumber>
69+
</_GroupStartsWith> -->
14370

144-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '7')">
145-
<Project Include="JIT\IL_Conformance\**\*.csproj" Exclude="@(DisabledProjects)">
146-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
147-
</Project>
148-
<Project Include="JIT\IL_Conformance\**\*.ilproj" Exclude="@(DisabledProjects)">
149-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
150-
</Project>
151-
</ItemGroup>
71+
<_GroupStartsWith Include="JIT\CodeGenBringUpTests\DblNeg_ro.csproj">
72+
<GroupNumber>2</GroupNumber>
73+
</_GroupStartsWith>
15274

153-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '8')">
154-
<Project Include="JIT\jit64\**\*.csproj" Exclude="@(DisabledProjects)">
155-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
156-
</Project>
157-
<Project Include="JIT\jit64\**\*.ilproj" Exclude="@(DisabledProjects)">
158-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
159-
</Project>
160-
</ItemGroup>
75+
<_GroupStartsWith Include="JIT\Directed\shift\uint32_d.csproj">
76+
<GroupNumber>3</GroupNumber>
77+
</_GroupStartsWith>
16178

162-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '9')">
163-
<Project Include="JIT\Methodical\**\*.csproj" Exclude="@(DisabledProjects)">
164-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
165-
</Project>
166-
</ItemGroup>
79+
<_GroupStartsWith Include="JIT\Methodical\AsgOp\r8\r8flat_cs_r.csproj">
80+
<GroupNumber>4</GroupNumber>
81+
</_GroupStartsWith>
16782

168-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '10')">
169-
<Project Include="JIT\Methodical\**\*.ilproj" Exclude="@(DisabledProjects)">
170-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
171-
</Project>
172-
</ItemGroup>
83+
<_GroupStartsWith Include="JIT\Methodical\eh\finallyexec\tryCatchFinallyThrow_nonlocalexit4_ro.csproj">
84+
<GroupNumber>5</GroupNumber>
85+
</_GroupStartsWith>
17386

174-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '11')">
175-
<Project Include="JIT\opt\**\*.csproj" Exclude="@(DisabledProjects)">
176-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
177-
</Project>
178-
<Project Include="JIT\Performance\**\*.csproj" Exclude="@(DisabledProjects)">
179-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
180-
</Project>
181-
<Project Include="JIT\S*\**\*.csproj" Exclude="@(DisabledProjects)">
182-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
183-
</Project>
184-
<Project Include="JIT\opt\**\*.ilproj" Exclude="@(DisabledProjects)">
185-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
186-
</Project>
187-
<Project Include="JIT\Performance\**\*.ilproj" Exclude="@(DisabledProjects)">
188-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
189-
</Project>
190-
<Project Include="JIT\S*\**\*.ilproj" Exclude="@(DisabledProjects)">
191-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
192-
</Project>
193-
</ItemGroup>
87+
<_GroupStartsWith Include="JIT\Regression\CLR-x86-JIT\V1-M09.5-PDC\b25701\b25701.ilproj">
88+
<GroupNumber>6</GroupNumber>
89+
</_GroupStartsWith>
19490

195-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '12')">
196-
<Project Include="JIT\R*\**\*.csproj" Exclude="@(DisabledProjects)">
197-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
198-
</Project>
199-
</ItemGroup>
91+
<_GroupStartsWith Include="JIT\Regression\JitBlue\GitHub_19171\GitHub_19171.csproj">
92+
<GroupNumber>7</GroupNumber>
93+
</_GroupStartsWith>
20094

201-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '13')">
202-
<Project Include="JIT\R*\**\*.ilproj" Exclude="@(DisabledProjects)">
203-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
204-
</Project>
205-
</ItemGroup>
95+
<_GroupStartsWith Include="JIT\jit64\valuetypes\nullable\box-unbox\value\box-unbox-value030.csproj">
96+
<GroupNumber>8</GroupNumber>
97+
</_GroupStartsWith>
20698

207-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '14')">
208-
<Project Include="Loader\**\*.csproj" Exclude="@(DisabledProjects)">
209-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
210-
</Project>
99+
<_GroupStartsWith Include="Loader\classloader\TypeGeneratorTests\TypeGeneratorTest225\Generated225.ilproj">
100+
<GroupNumber>9</GroupNumber>
101+
</_GroupStartsWith>
102+
103+
<_GroupStartsWith Include="Loader\classloader\generics\VSD\Class2_ImplicitOverrideVirtualNewslot.csproj">
104+
<GroupNumber>10</GroupNumber>
105+
</_GroupStartsWith>
211106
</ItemGroup>
212107

213-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '15')">
214-
<Project Include="Loader\**\*.ilproj" Exclude="@(DisabledProjects)">
215-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
216-
</Project>
217-
</ItemGroup>
108+
<Error Condition=" '$(CLRTestPriorityToBuild)' == '1' And ($(__TestGroupToBuild) &lt; 1 Or $(__TestGroupToBuild) &gt; 10)" Text="__TestGroupToBuild property must be between 1 and 10 for Pri1." />
218109

219-
<ItemGroup Condition="($(__TestGroupToBuild) == '2' And $(TestBuildSlice) == '16')">
220-
<Project Include="m*\**\*.csproj" Exclude="@(DisabledProjects)">
221-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
222-
</Project>
223-
<Project Include="p*\**\*.csproj" Exclude="@(DisabledProjects)">
224-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
225-
</Project>
226-
<Project Include="r*\**\*.csproj" Exclude="@(DisabledProjects)">
227-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
228-
</Project>
229-
<Project Include="s*\**\*.csproj" Exclude="@(DisabledProjects)">
230-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
231-
</Project>
232-
<Project Include="t*\**\*.csproj" Exclude="@(DisabledProjects)">
233-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
234-
</Project>
235-
<Project Include="m*\**\*.ilproj" Exclude="@(DisabledProjects)">
236-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
237-
</Project>
238-
<Project Include="p*\**\*.ilproj" Exclude="@(DisabledProjects)">
239-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
240-
</Project>
241-
<Project Include="r*\**\*.ilproj" Exclude="@(DisabledProjects)">
242-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
243-
</Project>
244-
<Project Include="s*\**\*.ilproj" Exclude="@(DisabledProjects)">
245-
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
246-
</Project>
247-
<Project Include="t*\**\*.ilproj" Exclude="@(DisabledProjects)">
110+
<PropertyGroup>
111+
<!-- This computes lower inclusive and upper exclusive boundaries for Group number $(__TestGroupToBuild). -->
112+
<_GroupStartsWith>@(_GroupStartsWith->WithMetadataValue("GroupNumber", $(__TestGroupToBuild)))</_GroupStartsWith>
113+
<_GroupEndsWithExcl>@(_GroupStartsWith->WithMetadataValue("GroupNumber", $([MSBuild]::Add($(__TestGroupToBuild), 1))))</_GroupEndsWithExcl>
114+
</PropertyGroup>
115+
116+
<ItemGroup>
117+
<AllProjects>
118+
<InGroup>True</InGroup>
119+
</AllProjects>
120+
121+
<AllProjects Condition=" '$(_GroupStartsWith)' != '' And $([System.StringComparer]::Ordinal.Compare($(_GroupStartsWith), %(Identity))) &gt; 0 ">
122+
<InGroup>False</InGroup>
123+
</AllProjects>
124+
125+
<AllProjects Condition=" '$(_GroupEndsWithExcl)' != '' And $([System.StringComparer]::Ordinal.Compare(%(Identity), $(_GroupEndsWithExcl))) &gt;= 0 ">
126+
<InGroup>False</InGroup>
127+
</AllProjects>
128+
</ItemGroup>
129+
130+
<ItemGroup>
131+
<Project Include="@(AllProjects->WithMetadataValue('InGroup', 'True'))">
248132
<AdditionalProperties>OSGroup=$(OSGroup)</AdditionalProperties>
249133
</Project>
250134
</ItemGroup>

0 commit comments

Comments
 (0)