Skip to content
Closed
9 changes: 8 additions & 1 deletion eng/pipelines/common/templates/runtimes/build-test-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,13 @@ jobs:
- name: testTreeFilterArg
value: 'tree GC/Scenarios/GCSimulator'

- name: buildAsStandaloneArg
value: ''

- ${{ if in(parameters.testGroup, 'gcstress0x3-gcstress0xc', 'gcstress-extra')}}:
- name: buildAsStandaloneArg
value: '/p:BuildAsStandalone=true'

steps:

# Install test build dependencies
Expand All @@ -106,7 +113,7 @@ jobs:
displayName: Disk Usage before Build

# Build managed test components
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS $(buildAsStandaloneArg)
displayName: Build managed test components

- ${{ if in(parameters.osGroup, 'osx', 'ios', 'tvos') }}:
Expand Down
6 changes: 3 additions & 3 deletions eng/pipelines/common/templates/runtimes/run-test-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -267,19 +267,19 @@ jobs:
# and directly unzip them there after download). Unfortunately the logic to copy
# the native artifacts to the final test folders is dependent on availability of the
# managed test artifacts. This step also generates the final test execution scripts.
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) copynativeonly $(logRootNameArg)Native $(testTreeFilterArg) $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(priorityArg) $(librariesOverrideArg) $(codeFlowEnforcementArg)
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) copynativeonly $(logRootNameArg)Native $(testTreeFilterArg) $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(priorityArg) $(librariesOverrideArg) $(codeFlowEnforcementArg) $(buildAsStandaloneArg)
displayName: Copy native test components to test output folder


# Generate test wrappers. This is the step that examines issues.targets to exclude tests.
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) buildtestwrappersonly $(logRootNameArg)Wrappers $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg) $(librariesOverrideArg) $(runtimeVariantArg)
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) buildtestwrappersonly $(logRootNameArg)Wrappers $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg) $(librariesOverrideArg) $(runtimeVariantArg) $(buildAsStandaloneArg)
displayName: Generate test wrappers


# Compose the Core_Root folder containing all artifacts needed for running
# CoreCLR tests. This step also compiles the framework using Crossgen2
# in ReadyToRun jobs.
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) generatelayoutonly $(logRootNameArg)Layout $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg) $(librariesOverrideArg) $(runtimeVariantArg)
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) generatelayoutonly $(logRootNameArg)Layout $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg) $(librariesOverrideArg) $(runtimeVariantArg) $(buildAsStandaloneArg)
displayName: Generate CORE_ROOT

# Build a Mono LLVM AOT cross-compiler for non-amd64 targets (in this case, just arm64)
Expand Down
7 changes: 7 additions & 0 deletions eng/pipelines/common/templates/runtimes/test-variables.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,3 +98,10 @@ variables:
- ${{ if eq(parameters.osGroup, 'windows') }}:
- name: priorityArg
value: '-priority=1'

- name: buildAsStandaloneArg
value: ''

- ${{ if in(parameters.testGroup, 'gcstress0x3-gcstress0xc', 'gcstress-extra')}}:
- name: buildAsStandaloneArg
value: '/p:BuildAsStandalone=true'
196 changes: 196 additions & 0 deletions src/tests/Common/testgrouping.proj
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,197 @@
<XUnitWrapperDll>$(TestBinDir)JIT\jit64\JIT.jit64.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\Arm\AdvSimd*\**">
<TestGroup>JIT.HardwareIntrinsics.Arm.AdvSimd</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\Arm\Aes*\**">
<TestGroup>JIT.HardwareIntrinsics.Arm.Aes</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\Arm\ArmBase*\**">
<TestGroup>JIT.HardwareIntrinsics.Arm.ArmBase</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\Arm\Crc32*\**">
<TestGroup>JIT.HardwareIntrinsics.Arm.Crc32</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\Arm\Dp*\**">
<TestGroup>JIT.HardwareIntrinsics.Arm.Dp</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\Arm\Rdm*\**">
<TestGroup>JIT.HardwareIntrinsics.Arm.Rdm</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\Arm\Sha1*\**">
<TestGroup>JIT.HardwareIntrinsics.Arm.Sha1</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\Arm\Sha256*\**">
<TestGroup>JIT.HardwareIntrinsics.Arm.Sha256</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\General\NotSupported*\**">
<TestGroup>JIT.HardwareIntrinsics.General.NotSupported</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\General\Vector64*\**">
<TestGroup>JIT.HardwareIntrinsics.General.Vector64</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\General\Vector128*\**">
<TestGroup>JIT.HardwareIntrinsics.General.Vector128</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\General\Vector256*\**">
<TestGroup>JIT.HardwareIntrinsics.General.Vector256</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Aes*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Aes</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Avx1*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Avx1</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Avx2*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Avx2</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\AvxVnni*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.AvxVnni</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Bmi1*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Bmi1</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Bmi2*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Bmi2</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Fma*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Fma</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\General*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.General</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Lzcnt*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Lzcnt</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Pclmulqdq*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Pclmulqdq</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Popcnt*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Popcnt</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Regression*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Regression</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Sse1*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Sse1</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Sse2*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Sse2</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Sse3*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Sse3</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Sse41*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Sse41</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Sse42*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Sse42</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\Ssse3*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.Ssse3</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\X86Base*\**">
<TestGroup>JIT.HardwareIntrinsics.X86.X86Base</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\Methodical\a*\**;
$(TestBinDir)JIT\Methodical\b*\**;
$(TestBinDir)JIT\Methodical\c*\**;
$(TestBinDir)JIT\Methodical\d*\**;
$(TestBinDir)JIT\Methodical\A*\**;
$(TestBinDir)JIT\Methodical\B*\**;
$(TestBinDir)JIT\Methodical\C*\**;
$(TestBinDir)JIT\Methodical\D*\**">
<TestGroup>JIT.Methodical.a-dA-D</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\Methodical\JIT.Methodical.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\Methodical\eh\**">
<TestGroup>JIT.Methodical.eh</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\Methodical\JIT.Methodical.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\Methodical\e*\**;
$(TestBinDir)JIT\Methodical\E*\**"
Exclude="$(TestBinDir)JIT\Methodical\eh\**">
<TestGroup>JIT.Methodical.eE</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\Methodical\JIT.Methodical.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\Methodical\f*\**;
$(TestBinDir)JIT\Methodical\g*\**;
$(TestBinDir)JIT\Methodical\h*\**;
$(TestBinDir)JIT\Methodical\i*\**;
$(TestBinDir)JIT\Methodical\F*\**;
$(TestBinDir)JIT\Methodical\G*\**;
$(TestBinDir)JIT\Methodical\H*\**;
$(TestBinDir)JIT\Methodical\I*\**">
<TestGroup>JIT.Methodical.f-iF-I</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\Methodical\JIT.Methodical.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\Regression\CLR-x86-JIT\V1-M09*\**;
$(TestBinDir)JIT\Regression\CLR-x86-JIT\V1-M10*\**;
$(TestBinDir)JIT\Regression\CLR-x86-JIT\V1-M11*\**">
Expand All @@ -43,6 +234,11 @@
<XUnitWrapperDll>$(TestBinDir)JIT\Regression\JIT.Regression.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)JIT\HardwareIntrinsics\X86\S*\**">
<TestGroup>JIT.HardwareIntrinsics.S</TestGroup>
<XUnitWrapperDll>$(TestBinDir)JIT\HardwareIntrinsics\JIT.HardwareIntrinsics.XUnitWrapper.dll</XUnitWrapperDll>
</TestGrouping>

<TestGrouping Include="$(TestBinDir)Loader\classloader\generics\**">
<TestGroup>Loader.classloader.generics</TestGroup>
<XUnitWrapperDll>$(TestBinDir)Loader\classloader\Loader.classloader.XUnitWrapper.dll</XUnitWrapperDll>
Expand Down
11 changes: 6 additions & 5 deletions src/tests/Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -298,13 +298,14 @@
</PropertyGroup>
</Target>

<Target Name="GenerateMarkerFiles" BeforeTargets="AssignTargetPaths">
<PropertyGroup Condition="'$(NumberOfStripesToUseInStress)' == '' and '$(IsMergedTestRunnerAssembly)' == 'true'">
<Target Name="GenerateMarkerFiles" BeforeTargets="AssignTargetPaths"
Condition="'$(IsMergedTestRunnerAssembly)' == 'true' and !$(BuildAsStandalone)">
<PropertyGroup Condition="'$(NumberOfStripesToUseInStress)' == ''">
<NumberOfStripesToUseInStress>1</NumberOfStripesToUseInStress> <!-- Set a custom number of stripes in stress to allow very large merged groups to function in the presence of GCStress -->
</PropertyGroup>

<!-- Generate a set of stress marker files to be used in stress scenarios in CI runs -->
<ItemGroup Condition="'$(NumberOfStripesToUseInStress)' != '' and '$(IsMergedTestRunnerAssembly)' == 'true'">
<ItemGroup Condition="'$(NumberOfStripesToUseInStress)' != ''">
<SequenceOfIntegers Include="0"/>
<SequenceOfIntegers Include="1"/>
<SequenceOfIntegers Include="2"/>
Expand Down Expand Up @@ -415,7 +416,7 @@

<ItemGroup>
<Content Include="$(AssemblyName).reflect.xml" Condition="Exists('$(AssemblyName).reflect.xml')" CopyToOutputDirectory="PreserveNewest" />
<MarkerFile Include="$(IntermediateOutputPath)\$(MSBuildProjectName).MergedTestAssembly" Condition="'$(IsMergedTestRunnerAssembly)' == 'true'">
<MarkerFile Include="$(IntermediateOutputPath)\$(MSBuildProjectName).MergedTestAssembly">
<Type>MergedTestAssembly</Type>
</MarkerFile>
<MarkerFile Include="$(IntermediateOutputPath)\$(AssemblyName).NoMonoAot" Condition="'$(MonoAotIncompatible)' == 'true'">
Expand All @@ -437,7 +438,7 @@

<!-- We don't want the out-of-process test marker file to be included in referencing projects, so we don't include it as content. -->
<WriteLinesToFile
Condition="'$(RequiresProcessIsolation)' == 'true' and '$(BuildAsStandalone)' != 'true'"
Condition="'$(RequiresProcessIsolation)' == 'true'"
File="$(OutputPath)\$(AssemblyName).OutOfProcessTest"
Lines="OutOfProcessTest"
Overwrite="true"
Expand Down
1 change: 1 addition & 0 deletions src/tests/build.proj
Original file line number Diff line number Diff line change
Expand Up @@ -589,6 +589,7 @@
<GroupBuildCmd>$(GroupBuildCmd) /maxcpucount</GroupBuildCmd>
<GroupBuildCmd Condition="'$(TargetOS)' == 'ios' or '$(TargetOS)' == 'tvos'">$(GroupBuildCmd) "/p:DevTeamProvisioning=-"</GroupBuildCmd>
<GroupBuildCmd>$(GroupBuildCmd) /bl:$(ArtifactsDir)/log/$(Configuration)/InnerManagedTestBuild.$(__TestGroupToBuild).binlog</GroupBuildCmd>
<GroupBuildCmd Condition="'$(BuildAsStandalone)' == 'true'">$(GroupBuildCmd) "/p:BuildAsStandalone=true"</GroupBuildCmd>
<GroupBuildCmd Condition="'$(CrossBuild)' == 'true'">$(GroupBuildCmd) "/p:CrossBuild=true"</GroupBuildCmd>
<GroupBuildCmd Condition="'$(TestBuildMode)' == 'nativeaot'">$(GroupBuildCmd) "/p:DefaultBuildAllTarget=BuildNativeAot"</GroupBuildCmd>
<GroupBuildCmd Condition="'$(IlcMultiModule)' == 'true'">$(GroupBuildCmd) "/p:IlcMultiModule=true"</GroupBuildCmd>
Expand Down