mirror of
https://github.com/VSadov/Satori.git
synced 2025-06-08 03:27:04 +09:00

* Enable NuGet Audit and fix issues (#107639) * Enable NuGet Audit and fix issues Microsoft.NET.HostModel can reference the live builds of the packages it depends on. These will be deployed by the SDK. Most other audit alerts were due to tasks pulling in old dependencies that aren't even used by the task. Avoid these by cherry-picking just the assemblies needed by the tasks and provided by MSBuild / SDK. This prevents NuGet from downloading the package closure with the vulnerable packages. We don't need those packages since the tasks aren't responsible for deploying them. A better solution in the future would be a targeting pack for MSBuild and the .NET SDK - so that components that contribute to these hosts have a surface area they can target without taking on responsibility for servicing. There is once case where we have a test that references NuGet.* packages which also bring in stale dependencies that overlap with framework assemblies. Avoid these by cherry-picking the NuGet packages in the same way. * Fix package path on linux * Only use live JSON from HostModel SDK pins S.R.M and a few others, so don't make them upgrade yet. * Add a couple missing assembly references * Refactor tasks dependencies Consolidate representation of msbuild-provided task dependencies * Fix audit warnings in tests * Remove MetadataLoadContext from WasmAppBuilder package * Update Analyzer.Testing packages * Reduce exposure of Microsoft.Build.Tasks.Core * Fix audit warnings that only occur on browser * Update Asn1 used by linker analyzer tests * React to breaking change in analyzer test SDK * Enable working DryIoc tests * Fix double-write when LibrariesConfiguration differs from Configuration * Fix LibrariesConfiguration update target * Clean up references and add comments. * Make HostModel references private This ensures projects referenced will not be rebuilt by tests. This also means the HostModel package will not list these as references, but that's OK since the SDK provides them and this is not a shipping package. * Use ProjectReferenceExclusion to avoid framework project references On .NETCore we want to use the targeting pack and avoid rebuilding libs. * Update src/libraries/System.Runtime.InteropServices.JavaScript/tests/JSImportGenerator.UnitTest/JSImportGenerator.Unit.Tests.csproj Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com> --------- Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com> * Remove live System.Text.Json reference from HostModel (#108263) * Reduce changes to src/installer Since we're no longer trying to reference live S.T.J we don't need these. * Update JSON toolset version * Don't error for NuGet audit on non-official builds (#108718) * Reference live S.T.JSON from DI.ExternalContainers.Tests * Update STJ in Wasm.Build.Tests * Make SystemTextJsonToolsetVersion 8.0.4 We cannot count on VS and MSBuild updating by the time 9.0 ships GA. Fix WASM projects which only target .NET by referencing the LKG and dropping all assets. For Microsoft.NET.HostModel and other build tasks, keep them on the version we can garuntee is present in VS. NoWarn the Audit warnings here. This is safe because we can ensure one of two things. 1. The package is non-shipping and customers won't see the warning and the referencing repo in the product will ensure an update or exclusion of the dependency. (HostModel) 2. The project excludes the reference entirely as making it PrivateAssets (not in package) and ExcludeAssets=runtime (no possibility of using runtime). * Fix STJ audit warning in installer tests --------- Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
499 lines
39 KiB
XML
499 lines
39 KiB
XML
<Project>
|
|
<PropertyGroup>
|
|
<!-- For non-SDK projects that import this file and then import Microsoft.Common.props,
|
|
tell Microsoft.Common.props not to import Directory.Build.props again. -->
|
|
<ImportDirectoryBuildProps>false</ImportDirectoryBuildProps>
|
|
<!-- Used to determine if we should build some packages only once across multiple official build legs.
|
|
For offline builds we still set OfficialBuildId but we need to build all the packages for a single
|
|
leg only, so we also take DotNetBuildSourceOnly into account. -->
|
|
<BuildingAnOfficialBuildLeg Condition="'$(BuildingAnOfficialBuildLeg)' == '' and '$(OfficialBuildId)' != '' and '$(DotNetBuildSourceOnly)' != 'true'">true</BuildingAnOfficialBuildLeg>
|
|
<!-- When doing a source build, we want to build the various text-only manifests in
|
|
all cases, rather than ordinarily where we build them during mobile or wasm
|
|
build legs. This makes the manifests available on source-only builds. -->
|
|
<ForceBuildMobileManifests Condition="'$(DotNetBuildSourceOnly)' == 'true'">true</ForceBuildMobileManifests>
|
|
<!-- Propagate the configuration and platform to project references. When building in VS, this defaults to true.
|
|
Explicitly setting it to false ensures projects are built in the corresponding configuration both in VS and on the command line. -->
|
|
<ShouldUnsetParentConfigurationAndPlatform>false</ShouldUnsetParentConfigurationAndPlatform>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Label="CalculateTargetOS">
|
|
<_hostOS>linux</_hostOS>
|
|
<_hostOS Condition="$([MSBuild]::IsOSPlatform('OSX'))">osx</_hostOS>
|
|
<_hostOS Condition="$([MSBuild]::IsOSPlatform('FREEBSD'))">freebsd</_hostOS>
|
|
<_hostOS Condition="$([MSBuild]::IsOSPlatform('NETBSD'))">netbsd</_hostOS>
|
|
<_hostOS Condition="$([MSBuild]::IsOSPlatform('ILLUMOS'))">illumos</_hostOS>
|
|
<_hostOS Condition="$([MSBuild]::IsOSPlatform('SOLARIS'))">solaris</_hostOS>
|
|
<_hostOS Condition="$([MSBuild]::IsOSPlatform('HAIKU'))">haiku</_hostOS>
|
|
<_hostOS Condition="$([MSBuild]::IsOSPlatform('WINDOWS'))">windows</_hostOS>
|
|
<HostOS>$(_hostOS)</HostOS>
|
|
<TargetOS Condition="'$(TargetOS)' == '' and '$(RuntimeIdentifier)' == 'browser-wasm'">browser</TargetOS>
|
|
<TargetOS Condition="'$(TargetOS)' == ''">$(_hostOS)</TargetOS>
|
|
<TargetsMobile Condition="'$(TargetOS)' == 'ios' or '$(TargetOS)' == 'iossimulator' or '$(TargetOS)' == 'maccatalyst' or '$(TargetOS)' == 'tvos' or '$(TargetOS)' == 'tvossimulator' or '$(TargetOS)' == 'android' or '$(TargetOS)' == 'browser' or '$(TargetOS)' == 'wasi'">true</TargetsMobile>
|
|
<TargetsAppleMobile Condition="'$(TargetOS)' == 'ios' or '$(TargetOS)' == 'iossimulator' or '$(TargetOS)' == 'maccatalyst' or '$(TargetOS)' == 'tvos' or '$(TargetOS)' == 'tvossimulator'">true</TargetsAppleMobile>
|
|
</PropertyGroup>
|
|
|
|
<!-- Platform property is required by RepoLayout.props in Arcade SDK. -->
|
|
<PropertyGroup Label="CalculateArch">
|
|
<_hostArch>$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant)</_hostArch>
|
|
<BuildArchitecture Condition="'$(BuildArchitecture)' == ''">$(_hostArch)</BuildArchitecture>
|
|
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and ('$(TargetOS)' == 'browser' or '$(RuntimeIdentifier)' == 'browser-wasm')">wasm</TargetArchitecture>
|
|
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and ('$(TargetOS)' == 'wasi' or '$(RuntimeIdentifier)' == 'wasi-wasm')">wasm</TargetArchitecture>
|
|
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(_hostArch)' == 'arm'">arm</TargetArchitecture>
|
|
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(_hostArch)' == 'armv6'">armv6</TargetArchitecture>
|
|
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(_hostArch)' == 'armel'">armel</TargetArchitecture>
|
|
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(_hostArch)' == 'arm64'">arm64</TargetArchitecture>
|
|
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(_hostArch)' == 'loongarch64'">loongarch64</TargetArchitecture>
|
|
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(_hostArch)' == 's390x'">s390x</TargetArchitecture>
|
|
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(_hostArch)' == 'ppc64le'">ppc64le</TargetArchitecture>
|
|
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(TargetsMobile)' == 'true'">x64</TargetArchitecture>
|
|
<TargetArchitecture Condition="'$(TargetArchitecture)' == ''">x64</TargetArchitecture>
|
|
<Platform Condition="'$(Platform)' == '' and '$(InferPlatformFromTargetArchitecture)' == 'true'">$(TargetArchitecture)</Platform>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Label="SetOSTargetMinVersions">
|
|
<!--
|
|
Minimum target OS versions, keep in sync with:
|
|
- eng/native/configurecompiler.cmake
|
|
- eng/native/build-commons.sh
|
|
- src/native/libs/build-native.sh
|
|
- src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/ObjectWriter/MachObjectWriter.cs
|
|
- src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets
|
|
- src/mono/mono/tools/offsets-tool/offsets-tool.py
|
|
- src/mono/msbuild/apple/build/AppleBuild.targets
|
|
- src/installer/pkg/sfx/bundle/shared-framework-distribution-template-x64.xml
|
|
- src/installer/pkg/sfx/bundle/shared-framework-distribution-template-arm64.xml
|
|
- src/tasks/AotCompilerTask/MonoAOTCompiler.props
|
|
- src/tasks/AppleAppBuilder/Xcode.cs
|
|
- src/tasks/MobileBuildTasks/Apple/AppleProject.cs
|
|
- https://github.com/dotnet/sdk repo > src/Installer/redist-installer/targets/GeneratePKG.targets
|
|
-->
|
|
<AndroidApiLevelMin>21</AndroidApiLevelMin>
|
|
<iOSVersionMin>12.2</iOSVersionMin>
|
|
<tvOSVersionMin>12.2</tvOSVersionMin>
|
|
<macOSVersionMin>12.0</macOSVersionMin>
|
|
<MacCatalystVersionMin>15.0</MacCatalystVersionMin>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<!-- Set OutDirName (Arcade specific property that must be set before the Arcade SDK is imported) to change the BaseOutputPath and
|
|
BaseIntermediateOutputPath properties to include the ref subfolder. -->
|
|
<IsReferenceAssemblyProject Condition="$([System.IO.Path]::GetFileName('$(MSBuildProjectDirectory)')) == 'ref'">true</IsReferenceAssemblyProject>
|
|
<OutDirName Condition="'$(IsReferenceAssemblyProject)' == 'true'">$(MSBuildProjectName)$([System.IO.Path]::DirectorySeparatorChar)ref</OutDirName>
|
|
</PropertyGroup>
|
|
|
|
<!-- Import the Arcade SDK -->
|
|
<Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" />
|
|
|
|
<!-- The TFMs to build and test against. -->
|
|
<PropertyGroup>
|
|
<NetCoreAppCurrentVersion>9.0</NetCoreAppCurrentVersion>
|
|
<NetCoreAppCurrentIdentifier>.NETCoreApp</NetCoreAppCurrentIdentifier>
|
|
<NetCoreAppCurrentTargetFrameworkMoniker>$(NetCoreAppCurrentIdentifier),Version=v$(NetCoreAppCurrentVersion)</NetCoreAppCurrentTargetFrameworkMoniker>
|
|
<MicrosoftNetCoreAppFrameworkName>Microsoft.NETCore.App</MicrosoftNetCoreAppFrameworkName>
|
|
<NetCoreAppCurrentBrandName>.NET $(NetCoreAppCurrentVersion)</NetCoreAppCurrentBrandName>
|
|
<NetCoreAppCurrent>net$(NetCoreAppCurrentVersion)</NetCoreAppCurrent>
|
|
|
|
<!-- The previous supported .NET version. -->
|
|
<NetCoreAppPreviousVersion>8.0</NetCoreAppPreviousVersion>
|
|
<!-- For the .NET 9 release, set NetCoreAppPrevious to empty as NuGet has issues
|
|
with duplicate TFMs (when using both NetCoreAppPrevious and NetCoreAppMinimum). -->
|
|
<NetCoreAppPrevious />
|
|
|
|
<!-- The minimum supported .NET version. -->
|
|
<NetCoreAppMinimum>net8.0</NetCoreAppMinimum>
|
|
<NetCoreAppMinimum Condition="'$(DotNetBuildSourceOnly)' == 'true'">$(NetCoreAppCurrent)</NetCoreAppMinimum>
|
|
|
|
<!-- when this is updated, make sure to keep $(_NetCoreAppToolCurrent)
|
|
in src/mono/wasm/build/WasmApp.LocalBuild.props
|
|
and in src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props in sync -->
|
|
<NetCoreAppToolCurrentVersion>9.0</NetCoreAppToolCurrentVersion>
|
|
<NetCoreAppToolCurrent>net$(NetCoreAppToolCurrentVersion)</NetCoreAppToolCurrent>
|
|
<NetCoreAppCurrentToolTargetFrameworkMoniker>$(NetCoreAppCurrentIdentifier),Version=v$(NetCoreAppToolCurrentVersion)</NetCoreAppCurrentToolTargetFrameworkMoniker>
|
|
|
|
<AspNetCoreAppCurrentVersion>9.0</AspNetCoreAppCurrentVersion>
|
|
<AspNetCoreAppCurrent>net$(AspNetCoreAppCurrentVersion)</AspNetCoreAppCurrent>
|
|
|
|
<NetFrameworkMinimum>net462</NetFrameworkMinimum>
|
|
<NetFrameworkCurrent>net48</NetFrameworkCurrent>
|
|
<NetFrameworkToolCurrent>net472</NetFrameworkToolCurrent>
|
|
<!-- Don't build for NETFramework during source-build. -->
|
|
<NetFrameworkMinimum Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
|
|
<NetFrameworkToolCurrent Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
|
|
<NetFrameworkCurrent Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
|
|
|
|
<!-- Important: Set this to the GA version (or a close approximation) during servicing and adjust the TFM property below. -->
|
|
<ApiCompatNetCoreAppBaselineVersion>8.0.0</ApiCompatNetCoreAppBaselineVersion>
|
|
<ApiCompatNetCoreAppBaselineTFM>net8.0</ApiCompatNetCoreAppBaselineTFM>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Label="CalculateConfiguration">
|
|
<!-- The RuntimeConfiguration property allows to pass in/specify a configuration that applies to both CoreCLR and Mono. -->
|
|
<RuntimeConfiguration Condition="'$(RuntimeConfiguration)' == ''">$(Configuration)</RuntimeConfiguration>
|
|
<RuntimeConfiguration Condition="'$(RuntimeConfiguration)' == '' and ('$(Configuration)' == 'Debug' or '$(Configuration)' == 'Release')">$(Configuration)</RuntimeConfiguration>
|
|
<RuntimeConfiguration Condition="'$(RuntimeConfiguration)' == ''">Debug</RuntimeConfiguration>
|
|
<CoreCLRConfiguration Condition="'$(CoreCLRConfiguration)' == ''">$(RuntimeConfiguration)</CoreCLRConfiguration>
|
|
<MonoConfiguration Condition="'$(MonoConfiguration)' == '' and '$(RuntimeConfiguration.ToLower())' != 'checked'">$(RuntimeConfiguration)</MonoConfiguration>
|
|
<!-- There's no checked configuration on Mono. -->
|
|
<MonoConfiguration Condition="'$(MonoConfiguration)' == '' and '$(RuntimeConfiguration.ToLower())' == 'checked'">Debug</MonoConfiguration>
|
|
<LibrariesConfiguration Condition="'$(LibrariesConfiguration)' == ''">$(Configuration)</LibrariesConfiguration>
|
|
<HostConfiguration Condition="'$(HostConfiguration)' == ''">$(Configuration)</HostConfiguration>
|
|
<TasksConfiguration Condition="'$(TasksConfiguration)' == ''">$(Configuration)</TasksConfiguration>
|
|
<ToolsConfiguration Condition="'$(ToolsConfiguration)' == ''">$(Configuration)</ToolsConfiguration>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<LibrariesProjectRoot>$([MSBuild]::NormalizeDirectory('$(MSBuildThisFileDirectory)', 'src', 'libraries'))</LibrariesProjectRoot>
|
|
<CoreClrProjectRoot>$([MSBuild]::NormalizeDirectory('$(MSBuildThisFileDirectory)', 'src', 'coreclr'))</CoreClrProjectRoot>
|
|
<MonoProjectRoot>$([MSBuild]::NormalizeDirectory('$(MSBuildThisFileDirectory)', 'src', 'mono'))</MonoProjectRoot>
|
|
<InstallerProjectRoot>$([MSBuild]::NormalizeDirectory('$(MSBuildThisFileDirectory)', 'src', 'installer'))</InstallerProjectRoot>
|
|
<WorkloadsProjectRoot>$([MSBuild]::NormalizeDirectory('$(MSBuildThisFileDirectory)', 'src', 'workloads'))</WorkloadsProjectRoot>
|
|
<ToolsProjectRoot>$([MSBuild]::NormalizeDirectory('$(MSBuildThisFileDirectory)', 'src', 'tools'))</ToolsProjectRoot>
|
|
<SharedNativeRoot>$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'src', 'native'))</SharedNativeRoot>
|
|
<RepoTasksDir>$([MSBuild]::NormalizeDirectory('$(MSBuildThisFileDirectory)', 'src', 'tasks'))</RepoTasksDir>
|
|
<IbcOptimizationDataDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'ibc'))</IbcOptimizationDataDir>
|
|
<MibcOptimizationDataDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'mibc'))</MibcOptimizationDataDir>
|
|
<DocsDir>$([MSBuild]::NormalizeDirectory('$(MSBuildThisFileDirectory)', 'docs'))</DocsDir>
|
|
<BrowserProjectRoot>$([MSBuild]::NormalizeDirectory($(MonoProjectRoot), 'browser'))</BrowserProjectRoot>
|
|
<WasmProjectRoot>$([MSBuild]::NormalizeDirectory($(MonoProjectRoot), 'wasm'))</WasmProjectRoot>
|
|
<WasiProjectRoot>$([MSBuild]::NormalizeDirectory($(MonoProjectRoot), 'wasi'))</WasiProjectRoot>
|
|
|
|
<AppleAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AppleAppBuilder', '$(TasksConfiguration)', '$(NetCoreAppToolCurrent)'))</AppleAppBuilderDir>
|
|
<AndroidAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AndroidAppBuilder', '$(TasksConfiguration)', '$(NetCoreAppToolCurrent)', 'publish'))</AndroidAppBuilderDir>
|
|
<MobileBuildTasksDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'MobileBuildTasks', '$(TasksConfiguration)', '$(NetCoreAppToolCurrent)'))</MobileBuildTasksDir>
|
|
<WasmAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmAppBuilder', '$(TasksConfiguration)', '$(NetCoreAppToolCurrent)'))</WasmAppBuilderDir>
|
|
<WasmBuildTasksDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmBuildTasks', '$(TasksConfiguration)', '$(NetCoreAppToolCurrent)', 'publish'))</WasmBuildTasksDir>
|
|
<WorkloadBuildTasksDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WorkloadBuildTasks', '$(TasksConfiguration)', '$(NetCoreAppToolCurrent)'))</WorkloadBuildTasksDir>
|
|
<LibraryBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'LibraryBuilder', '$(TasksConfiguration)', '$(NetCoreAppToolCurrent)'))</LibraryBuilderDir>
|
|
<MonoAOTCompilerDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'MonoAOTCompiler', '$(TasksConfiguration)', '$(NetCoreAppToolCurrent)'))</MonoAOTCompilerDir>
|
|
<MonoTargetsTasksDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'MonoTargetsTasks', '$(TasksConfiguration)', '$(NetCoreAppToolCurrent)'))</MonoTargetsTasksDir>
|
|
<TestExclusionListTasksDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'TestExclusionListTasks', '$(TasksConfiguration)', '$(NetCoreAppToolCurrent)'))</TestExclusionListTasksDir>
|
|
<InstallerTasksAssemblyPath Condition="'$(MSBuildRuntimeType)' == 'Core'">$([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'installer.tasks', '$(TasksConfiguration)', '$(NetCoreAppToolCurrent)', 'installer.tasks.dll'))</InstallerTasksAssemblyPath>
|
|
<InstallerTasksAssemblyPath Condition="'$(MSBuildRuntimeType)' != 'Core'">$([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'installer.tasks', '$(TasksConfiguration)', '$(NetFrameworkToolCurrent)', 'installer.tasks.dll'))</InstallerTasksAssemblyPath>
|
|
<Crossgen2SdkOverridePropsPath Condition="'$(MSBuildRuntimeType)' == 'Core'">$([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'Crossgen2Tasks', '$(TasksConfiguration)', '$(NetCoreAppToolCurrent)', 'Microsoft.NET.CrossGen.props'))</Crossgen2SdkOverridePropsPath>
|
|
<Crossgen2SdkOverrideTargetsPath Condition="'$(MSBuildRuntimeType)' == 'Core'">$([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'Crossgen2Tasks', '$(TasksConfiguration)', '$(NetCoreAppToolCurrent)', 'Microsoft.NET.CrossGen.targets'))</Crossgen2SdkOverrideTargetsPath>
|
|
<AppleAppBuilderTasksAssemblyPath>$([MSBuild]::NormalizePath('$(AppleAppBuilderDir)', 'AppleAppBuilder.dll'))</AppleAppBuilderTasksAssemblyPath>
|
|
<AndroidAppBuilderTasksAssemblyPath>$([MSBuild]::NormalizePath('$(AndroidAppBuilderDir)', 'AndroidAppBuilder.dll'))</AndroidAppBuilderTasksAssemblyPath>
|
|
<MobileBuildTasksAssemblyPath>$([MSBuild]::NormalizePath('$(MobileBuildTasksDir)', 'MobileBuildTasks.dll'))</MobileBuildTasksAssemblyPath>
|
|
<WasmAppBuilderTasksAssemblyPath>$([MSBuild]::NormalizePath('$(WasmAppBuilderDir)', 'WasmAppBuilder.dll'))</WasmAppBuilderTasksAssemblyPath>
|
|
<WasmBuildTasksAssemblyPath>$([MSBuild]::NormalizePath('$(WasmBuildTasksDir)', 'WasmBuildTasks.dll'))</WasmBuildTasksAssemblyPath>
|
|
<WasmAppHostDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmAppHost', 'wasm', '$(Configuration)'))</WasmAppHostDir>
|
|
<WorkloadBuildTasksAssemblyPath>$([MSBuild]::NormalizePath('$(WorkloadBuildTasksDir)', 'WorkloadBuildTasks.dll'))</WorkloadBuildTasksAssemblyPath>
|
|
<LibraryBuilderTasksAssemblyPath>$([MSBuild]::NormalizePath('$(LibraryBuilderDir)', 'LibraryBuilder.dll'))</LibraryBuilderTasksAssemblyPath>
|
|
<MonoAOTCompilerTasksAssemblyPath>$([MSBuild]::NormalizePath('$(MonoAOTCompilerDir)', 'MonoAOTCompiler.dll'))</MonoAOTCompilerTasksAssemblyPath>
|
|
<MonoTargetsTasksAssemblyPath>$([MSBuild]::NormalizePath('$(MonoTargetsTasksDir)', 'MonoTargetsTasks.dll'))</MonoTargetsTasksAssemblyPath>
|
|
<TestExclusionListTasksAssemblyPath>$([MSBuild]::NormalizePath('$(TestExclusionListTasksDir)', 'TestExclusionListTasks.dll'))</TestExclusionListTasksAssemblyPath>
|
|
<CoreCLRToolPath>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'coreclr', '$(TargetOS).$(TargetArchitecture).$(RuntimeConfiguration)'))</CoreCLRToolPath>
|
|
<ILAsmToolPath Condition="'$(DotNetBuildSourceOnly)' == 'true' or '$(BuildArchitecture)' == 's390x' or '$(BuildArchitecture)' == 'ppc64le'">$(CoreCLRToolPath)</ILAsmToolPath>
|
|
<!-- force download temmporarily https://github.com/dotnet/runtime/issues/101528
|
|
<WasmtimeDir Condition="'$(WasmtimeDir)' == '' and '$(WASMTIME_PATH)' != '' and Exists($(WASMTIME_PATH))">$(WASMTIME_PATH)</WasmtimeDir>
|
|
-->
|
|
<WasmtimeDir Condition="'$(WasmtimeDir)' == ''">$([MSBuild]::NormalizeDirectory($(ArtifactsObjDir), 'wasmtime'))</WasmtimeDir>
|
|
<InstallWasmtimeForTests Condition="'$(InstallWasmtimeForTests)' == '' and !Exists($(WasmtimeDir))">true</InstallWasmtimeForTests>
|
|
<WasmCommonTargetsPath>$([MSBuild]::NormalizeDirectory($(WasmProjectRoot), 'build'))</WasmCommonTargetsPath>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Label="CalculatePortableBuild">
|
|
<PortableBuild Condition="'$(PortableBuild)' == '' and '$(DotNetBuildSourceOnly)' == 'true'">false</PortableBuild>
|
|
<PortableBuild Condition="'$(PortableBuild)' == ''">true</PortableBuild>
|
|
</PropertyGroup>
|
|
|
|
<!-- _portableOS is the portable rid-OS corresponding to the target platform. -->
|
|
<PropertyGroup Label="CalculatePortableOS">
|
|
<!-- To determine _portableOS we use TargetOS.
|
|
TargetOS is not a rid-OS. For example: for Windows it is 'windows' instead of 'win'.
|
|
And, for flavors of Linux, like 'linux-musl' and 'linux-bionic', TargetOS is 'linux'. -->
|
|
|
|
<_portableOS>$(TargetOS.ToLowerInvariant())</_portableOS>
|
|
<_portableOS Condition="'$(_portableOS)' == 'windows'">win</_portableOS>
|
|
|
|
<!-- TargetOS=AnyOS is a sentinel value used by tests, ignore it. -->
|
|
<_portableOS Condition="'$(_portableOS)' == 'anyos'">$(__PortableTargetOS)</_portableOS>
|
|
|
|
<!-- Detect linux flavors using __PortableTargetOS from the native script. -->
|
|
<_portableOS Condition="'$(_portableOS)' == 'linux' and '$(__PortableTargetOS)' == 'linux-musl'">linux-musl</_portableOS>
|
|
<_portableOS Condition="'$(_portableOS)' == 'linux' and '$(__PortableTargetOS)' == 'linux-bionic'">linux-bionic</_portableOS>
|
|
|
|
<!-- On Windows, we can build for Windows and Mobile.
|
|
For other TargetOSes, create a "win" build, built from TargetOS sources and "win" pre-built packages. -->
|
|
<_portableOS Condition="'$(HostOS)' == 'win' and '$(TargetsMobile)' != 'true'">win</_portableOS>
|
|
</PropertyGroup>
|
|
|
|
<!-- PackageRID is used for packages needed for the target. -->
|
|
<PropertyGroup Label="CalculatePackageRID">
|
|
<_packageOS>$(_portableOS)</_packageOS>
|
|
|
|
<_packageOS Condition="'$(CrossBuild)' == 'true' and '$(_portableOS)' != 'linux-musl' and '$(_portableOS)' != 'linux-bionic'">$(_hostOS)</_packageOS>
|
|
|
|
<!-- source-build sets PackageOS to build with non-portable rid packages that were source-built previously. -->
|
|
<PackageRID Condition="'$(PackageOS)' != ''">$(PackageOS)-$(TargetArchitecture)</PackageRID>
|
|
<PackageRID Condition="'$(PackageRID)' == ''">$(_packageOS)-$(TargetArchitecture)</PackageRID>
|
|
</PropertyGroup>
|
|
|
|
<!-- ToolsRID is used for packages needed on the build host. -->
|
|
<PropertyGroup Label="CalculateToolsRID">
|
|
<!-- _portableHostOS is the portable rid-OS corresponding to the build host platform.
|
|
|
|
To determine _portableHostOS we use _hostOS, similar to how _portableOS is calculated from TargetOS.
|
|
|
|
When we're not cross-building we can detect linux flavors by looking at _portableOS
|
|
because the target platform and the build host platform are the same.
|
|
For cross-builds, we're currently unable to detect the flavors. -->
|
|
<_portableHostOS>$(_hostOS)</_portableHostOS>
|
|
<_portableHostOS Condition="'$(_portableHostOS)' == 'windows'">win</_portableHostOS>
|
|
<_portableHostOS Condition="'$(CrossBuild)' != 'true' and '$(_portableOS)' == 'linux-musl'">linux-musl</_portableHostOS>
|
|
|
|
<!-- source-build sets ToolsOS to build with non-portable rid packages that were source-built previously. -->
|
|
<ToolsRID Condition="'$(ToolsOS)' != ''">$(ToolsOS)-$(_hostArch)</ToolsRID>
|
|
<ToolsRID Condition="'$(ToolsRID)' == ''">$(_portableHostOS)-$(_hostArch)</ToolsRID>
|
|
|
|
<!-- Microsoft.NET.Sdk.IL SDK defaults to the portable host rid. Match it to ToolsRID (for source-build). -->
|
|
<MicrosoftNetCoreIlasmPackageRuntimeId>$(ToolsRID)</MicrosoftNetCoreIlasmPackageRuntimeId>
|
|
</PropertyGroup>
|
|
|
|
<!-- OutputRID is used to name the target platform.
|
|
For portable builds, OutputRID matches _portableOS.
|
|
For non-portable builds, it uses __DistroRid (from the native build script), or falls back to RuntimeInformation.RuntimeIdentifier.
|
|
Source-build sets OutputRID directly. -->
|
|
<PropertyGroup Label="CalculateOutputRID">
|
|
<_hostRid Condition="'$(MSBuildRuntimeType)' == 'core'">$([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier)</_hostRid>
|
|
<_hostRid Condition="'$(MSBuildRuntimeType)' != 'core'">win-$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString().ToLowerInvariant)</_hostRid>
|
|
|
|
<_parseDistroRid>$(__DistroRid)</_parseDistroRid>
|
|
<_parseDistroRid Condition="'$(_parseDistroRid)' == ''">$(_hostRid)</_parseDistroRid>
|
|
<_distroRidIndex>$(_parseDistroRid.LastIndexOf('-'))</_distroRidIndex>
|
|
|
|
<_outputOS>$(_parseDistroRid.SubString(0, $(_distroRidIndex)))</_outputOS>
|
|
<_outputOS Condition="'$(PortableBuild)' == 'true'">$(_portableOS)</_outputOS>
|
|
|
|
<OutputRID Condition="'$(OutputRID)' == ''">$(_outputOS)-$(TargetArchitecture)</OutputRID>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Label="CalculateTargetOSName">
|
|
<TargetsFreeBSD Condition="'$(TargetOS)' == 'freebsd'">true</TargetsFreeBSD>
|
|
<Targetsillumos Condition="'$(TargetOS)' == 'illumos'">true</Targetsillumos>
|
|
<TargetsSolaris Condition="'$(TargetOS)' == 'solaris'">true</TargetsSolaris>
|
|
<TargetsHaiku Condition="'$(TargetOS)' == 'haiku'">true</TargetsHaiku>
|
|
<TargetsLinux Condition="'$(TargetOS)' == 'linux' or '$(TargetOS)' == 'android'">true</TargetsLinux>
|
|
<TargetsLinuxBionic Condition="'$(_portableOS)' == 'linux-bionic'">true</TargetsLinuxBionic>
|
|
<TargetsLinuxMusl Condition="'$(_portableOS)' == 'linux-musl'">true</TargetsLinuxMusl>
|
|
<TargetsNetBSD Condition="'$(TargetOS)' == 'netbsd'">true</TargetsNetBSD>
|
|
<TargetsOSX Condition="'$(TargetOS)' == 'osx'">true</TargetsOSX>
|
|
<TargetsMacCatalyst Condition="'$(TargetOS)' == 'maccatalyst'">true</TargetsMacCatalyst>
|
|
<TargetsiOS Condition="'$(TargetOS)' == 'ios' or '$(TargetOS)' == 'iossimulator'">true</TargetsiOS>
|
|
<TargetstvOS Condition="'$(TargetOS)' == 'tvos' or '$(TargetOS)' == 'tvossimulator'">true</TargetstvOS>
|
|
<TargetsiOSSimulator Condition="'$(TargetOS)' == 'iossimulator'">true</TargetsiOSSimulator>
|
|
<TargetstvOSSimulator Condition="'$(TargetOS)' == 'tvossimulator'">true</TargetstvOSSimulator>
|
|
<TargetsAndroid Condition="'$(TargetOS)' == 'android'">true</TargetsAndroid>
|
|
<TargetsBrowser Condition="'$(TargetOS)' == 'browser'">true</TargetsBrowser>
|
|
<TargetsWasi Condition="'$(TargetOS)' == 'wasi'">true</TargetsWasi>
|
|
<TargetsWindows Condition="'$(TargetOS)' == 'windows'">true</TargetsWindows>
|
|
<TargetsUnix Condition="'$(TargetsFreeBSD)' == 'true' or '$(Targetsillumos)' == 'true' or '$(TargetsSolaris)' == 'true' or '$(TargetsHaiku)' == 'true' or '$(TargetsLinux)' == 'true' or '$(TargetsNetBSD)' == 'true' or '$(TargetsOSX)' == 'true' or '$(TargetsMacCatalyst)' == 'true' or '$(TargetstvOS)' == 'true' or '$(TargetsiOS)' == 'true' or '$(TargetsAndroid)' == 'true'">true</TargetsUnix>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<MicrosoftNetCoreAppRefPackDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'microsoft.netcore.app.ref'))</MicrosoftNetCoreAppRefPackDir>
|
|
<MicrosoftNetCoreAppRefPackRefDir>$([MSBuild]::NormalizeDirectory('$(MicrosoftNetCoreAppRefPackDir)', 'ref', '$(NetCoreAppCurrent)'))</MicrosoftNetCoreAppRefPackRefDir>
|
|
<MicrosoftNetCoreAppRefPackDataDir>$([MSBuild]::NormalizeDirectory('$(MicrosoftNetCoreAppRefPackDir)', 'data'))</MicrosoftNetCoreAppRefPackDataDir>
|
|
|
|
<MicrosoftNetCoreAppRuntimePackDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'microsoft.netcore.app.runtime.$(OutputRID)', '$(LibrariesConfiguration)'))</MicrosoftNetCoreAppRuntimePackDir>
|
|
<MicrosoftNetCoreAppRuntimePackRidDir>$([MSBuild]::NormalizeDirectory('$(MicrosoftNetCoreAppRuntimePackDir)', 'runtimes', '$(OutputRID)'))</MicrosoftNetCoreAppRuntimePackRidDir>
|
|
<MicrosoftNetCoreAppRuntimePackRidLibTfmDir>$([MSBuild]::NormalizeDirectory('$(MicrosoftNetCoreAppRuntimePackRidDir)', 'lib', '$(NetCoreAppCurrent)'))</MicrosoftNetCoreAppRuntimePackRidLibTfmDir>
|
|
<MicrosoftNetCoreAppRuntimePackNativeDir>$([MSBuild]::NormalizeDirectory('$(MicrosoftNetCoreAppRuntimePackRidDir)', 'native'))</MicrosoftNetCoreAppRuntimePackNativeDir>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<DotNetHostBinDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', '$(OutputRID).$(HostConfiguration)', 'corehost'))</DotNetHostBinDir>
|
|
</PropertyGroup>
|
|
|
|
<!--Feature switches -->
|
|
<PropertyGroup>
|
|
<NoPgoOptimize Condition="'$(NoPgoOptimize)' == '' and '$(DotNetBuildSourceOnly)' == 'true'">true</NoPgoOptimize>
|
|
<EnableNgenOptimization Condition="'$(EnableNgenOptimization)' == '' and '$(DotNetBuildSourceOnly)' == 'true'">false</EnableNgenOptimization>
|
|
<EnableNgenOptimization Condition="'$(EnableNgenOptimization)' == '' and ('$(Configuration)' == 'Release' or '$(Configuration)' == 'Checked')">true</EnableNgenOptimization>
|
|
<!-- Enable NuGet static graph evaluation to optimize incremental restore -->
|
|
<RestoreUseStaticGraphEvaluation>true</RestoreUseStaticGraphEvaluation>
|
|
<!-- Turn off end of life target framework checks as we intentionally build older .NETCoreApp configurations. -->
|
|
<CheckEolTargetFramework>false</CheckEolTargetFramework>
|
|
<!-- Turn off workload support until we support them. -->
|
|
<MSBuildEnableWorkloadResolver>false</MSBuildEnableWorkloadResolver>
|
|
<!-- Disable source link when building locally. -->
|
|
<DisableSourceLink Condition="'$(DisableSourceLink)' == '' and
|
|
'$(ContinuousIntegrationBuild)' != 'true' and
|
|
'$(OfficialBuildId)' == ''">true</DisableSourceLink>
|
|
<!-- Runtime doesn't support Arcade-driven target framework filtering. -->
|
|
<NoTargetFrameworkFiltering>true</NoTargetFrameworkFiltering>
|
|
|
|
<NativeBuildPartitionPropertiesToRemove>ClrFullNativeBuild;ClrRuntimeSubset;ClrJitSubset;ClrPalTestsSubset;ClrAllJitsSubset;ClrILToolsSubset;ClrNativeAotSubset;ClrSpmiSubset;ClrCrossComponentsSubset;ClrDebugSubset;HostArchitecture;PgoInstrument;NativeOptimizationDataSupported;CMakeArgs;CxxStandardLibrary;CxxStandardLibraryStatic;CxxAbiLibrary</NativeBuildPartitionPropertiesToRemove>
|
|
<UseSystemZlib Condition="'$(TargetsAppleMobile)' == 'true' or '$(TargetOS)' == 'android' or '$(TargetArchitecture)' == 'armv6'">true</UseSystemZlib>
|
|
</PropertyGroup>
|
|
|
|
<!-- RepositoryEngineeringDir isn't set when Installer tests import this file. -->
|
|
<Import Project="$(RepositoryEngineeringDir)native\naming.props" />
|
|
<Import Project="$(RepositoryEngineeringDir)Subsets.props" />
|
|
|
|
<PropertyGroup>
|
|
<CoreLibSharedDir>$([MSBuild]::NormalizeDirectory('$(LibrariesProjectRoot)', 'System.Private.CoreLib', 'src'))</CoreLibSharedDir>
|
|
<CoreLibRefDir>$([MSBuild]::NormalizeDirectory('$(LibrariesProjectRoot)', 'System.Private.CoreLib', 'ref'))</CoreLibRefDir>
|
|
<CoreLibProject Condition="'$(RuntimeFlavor)' == 'CoreCLR'">$([MSBuild]::NormalizePath('$(CoreClrProjectRoot)', 'System.Private.CoreLib', 'System.Private.CoreLib.csproj'))</CoreLibProject>
|
|
<CoreLibProject Condition="'$(RuntimeFlavor)' == 'Mono'">$([MSBuild]::NormalizePath('$(MonoProjectRoot)', 'System.Private.CoreLib', 'System.Private.CoreLib.csproj'))</CoreLibProject>
|
|
<CoreLibProject Condition="'$(UseNativeAotCoreLib)' == 'true'">$([MSBuild]::NormalizePath('$(CoreClrProjectRoot)', 'nativeaot', 'System.Private.CoreLib', 'src', 'System.Private.CoreLib.csproj'))</CoreLibProject>
|
|
<UriProject>$([MSBuild]::NormalizePath('$(LibrariesProjectRoot)', 'System.Private.Uri', 'src', 'System.Private.Uri.csproj'))</UriProject>
|
|
|
|
<!-- this property is used by the SDK to pull in mono-based runtime packs -->
|
|
<UseMonoRuntime Condition="'$(UseMonoRuntime)' == '' and '$(RuntimeFlavor)' == 'Mono'">true</UseMonoRuntime>
|
|
|
|
<!-- For enabling the use of XUnitLogChecker in coreclr and libraries test runs. -->
|
|
<!-- TODO: Enable XUnitLogChecker for NativeAOT tests https://github.com/dotnet/runtime/issues/94722 -->
|
|
<IsXUnitLogCheckerSupported Condition="'$(IsXUnitLogCheckerSupported)' == ''">false</IsXUnitLogCheckerSupported>
|
|
<IsXUnitLogCheckerSupported Condition="'$(RuntimeFlavor)' == 'CoreCLR' and '$(TestNativeAot)' != 'true' and '$(RunNativeAotTestApps)' != 'true' and '$(TestSingleFile)' != 'true' and '$(TargetOS)' != 'browser' and '$(TargetOS)' != 'wasi' and '$(TargetOS)' != 'ios' and '$(TargetOS)' != 'iossimulator' and '$(TargetOS)' != 'tvos' and '$(TargetOS)' != 'tvossimulator' and '$(TargetOS)' != 'maccatalyst' and '$(TargetOS)' != 'android'">true</IsXUnitLogCheckerSupported>
|
|
<XUnitLogCheckerLibrariesOutDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'XUnitLogChecker'))</XUnitLogCheckerLibrariesOutDir>
|
|
</PropertyGroup>
|
|
|
|
<!-- Packaging -->
|
|
<PropertyGroup>
|
|
<GitHubRepositoryName>runtime</GitHubRepositoryName>
|
|
<RepositoryUrl>https://github.com/dotnet/$(GitHubRepositoryName)</RepositoryUrl>
|
|
<PackageProjectUrl>https://dot.net</PackageProjectUrl>
|
|
<Owners>microsoft,dotnetframework</Owners>
|
|
<IncludeSymbols>true</IncludeSymbols>
|
|
<LicenseFile>$(MSBuildThisFileDirectory)LICENSE.TXT</LicenseFile>
|
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
|
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
|
<Copyright>$(CopyrightNetFoundation)</Copyright>
|
|
<PackageThirdPartyNoticesFile>$(MSBuildThisFileDirectory)THIRD-PARTY-NOTICES.TXT</PackageThirdPartyNoticesFile>
|
|
<PackageReleaseNotes>https://go.microsoft.com/fwlink/?LinkID=799421</PackageReleaseNotes>
|
|
<IsPrivateAssembly>$(MSBuildProjectName.Contains('Private'))</IsPrivateAssembly>
|
|
<!-- Private packages should not be stable -->
|
|
<SuppressFinalPackageVersion Condition="'$(SuppressFinalPackageVersion)' == '' and $(IsPrivateAssembly)">true</SuppressFinalPackageVersion>
|
|
<!-- We don't want Private packages to be shipped to NuGet.org -->
|
|
<IsShippingPackage Condition="$(IsPrivateAssembly)">false</IsShippingPackage>
|
|
<PlaceholderFile>$(RepositoryEngineeringDir)_._</PlaceholderFile>
|
|
</PropertyGroup>
|
|
|
|
<!-- Flow these properties to consuming projects. -->
|
|
<ItemDefinitionGroup>
|
|
<TargetPathWithTargetPlatformMoniker>
|
|
<IsPrivateAssembly>$(IsPrivateAssembly.ToLowerInvariant())</IsPrivateAssembly>
|
|
</TargetPathWithTargetPlatformMoniker>
|
|
</ItemDefinitionGroup>
|
|
|
|
<!-- Language configuration -->
|
|
<PropertyGroup>
|
|
<!-- default to allowing all language features -->
|
|
<LangVersion>preview</LangVersion>
|
|
<!-- default to max warnlevel -->
|
|
<AnalysisLevel Condition="'$(MSBuildProjectExtension)' == '.csproj'">preview</AnalysisLevel>
|
|
<LangVersion Condition="'$(MSBuildProjectExtension)' == '.vbproj'">latest</LangVersion>
|
|
<!-- Enables Strict mode for Roslyn compiler -->
|
|
<Features>strict;nullablePublicOnly</Features>
|
|
<TreatWarningsAsErrors Condition="'$(TreatWarningsAsErrors)' == ''">true</TreatWarningsAsErrors>
|
|
<!-- Only upgrade NuGetAudit warnings to errors for official builds. -->
|
|
<WarningsNotAsErrors Condition="'$(OfficialBuild)' != 'true' OR '$(NuGetAuditWarnNotError)' == 'true'">$(WarningsNotAsErrors);NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>
|
|
<!-- Warnings to always disable -->
|
|
<NoWarn>$(NoWarn);CS8500;CS8969</NoWarn>
|
|
<!-- Suppress "CS1591 - Missing XML comment for publicly visible type or member" compiler errors for private assemblies. -->
|
|
<NoWarn Condition="'$(IsPrivateAssembly)' == 'true'">$(NoWarn);CS1591</NoWarn>
|
|
<!-- Always pass portable to override arcade sdk which uses embedded for local builds -->
|
|
<DebugType>portable</DebugType>
|
|
<KeepNativeSymbols Condition="'$(KeepNativeSymbols)' == '' and '$(DotNetBuildSourceOnly)' == 'true'">true</KeepNativeSymbols>
|
|
<KeepNativeSymbols Condition="'$(KeepNativeSymbols)' == ''">false</KeepNativeSymbols>
|
|
<!-- Used for launchSettings.json and runtime config files. -->
|
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
|
<!-- By default the SDK produces ref assembly for 5.0 or later -->
|
|
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
|
|
</PropertyGroup>
|
|
|
|
<!-- Define test projects and companions -->
|
|
<PropertyGroup Condition="$(MSBuildProjectFullPath.Contains('$([System.IO.Path]::DirectorySeparatorChar)tests$([System.IO.Path]::DirectorySeparatorChar)'))">
|
|
<IsTestProject Condition="$(MSBuildProjectName.EndsWith('.UnitTests')) or $(MSBuildProjectName.EndsWith('.Tests'))">true</IsTestProject>
|
|
<IsTrimmingTestProject Condition="$(MSBuildProjectName.EndsWith('.TrimmingTests'))">true</IsTrimmingTestProject>
|
|
<IsTestSupportProject Condition="'$(IsTestProject)' != 'true' and '$(IsTrimmingTestProject)' != 'true'">true</IsTestSupportProject>
|
|
|
|
<!-- Treat test assemblies as non-shipping (do not publish or sign them). -->
|
|
<IsShipping Condition="'$(IsTestProject)' == 'true' or '$(IsTestSupportProject)' == 'true' or '$(IsTrimmingTestProject)' == 'true'">false</IsShipping>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<!-- Treat as a generator project if either the parent or the parent parent directory is named gen. -->
|
|
<IsGeneratorProject Condition="$([System.IO.Path]::GetFileName('$(MSBuildProjectDirectory)')) == 'gen' or
|
|
$([System.IO.Path]::GetFileName('$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..'))')) == 'gen'">true</IsGeneratorProject>
|
|
<IsSourceProject Condition="'$(IsSourceProject)' == '' and
|
|
'$(IsReferenceAssemblyProject)' != 'true' and
|
|
'$(IsGeneratorProject)' != 'true' and
|
|
'$(IsTestProject)' != 'true' and
|
|
'$(IsTrimmingTestProject)' != 'true' and
|
|
'$(IsTestSupportProject)' != 'true' and
|
|
'$(UsingMicrosoftDotNetSharedFrameworkSdk)' != 'true' and
|
|
'$(MSBuildProjectExtension)' != '.pkgproj' and
|
|
'$(UsingMicrosoftNoTargetsSdk)' != 'true' and
|
|
'$(UsingMicrosoftTraversalSdk)' != 'true'">true</IsSourceProject>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Condition="'$(IsReferenceAssemblyProject)' == 'true'">
|
|
<!-- Reference assemblies are special and don't initialize fields or have empty finalizers, etc. -->
|
|
<RunAnalyzers>false</RunAnalyzers>
|
|
<!-- disable warnings about unused fields -->
|
|
<NoWarn>$(NoWarn);CS0169;CS0649;CS8618</NoWarn>
|
|
<!-- disable CS8597 because we throw null on reference assemblies. -->
|
|
<NoWarn>$(NoWarn);CS8597</NoWarn>
|
|
<!-- We base calls from constructors with null literals. -->
|
|
<NoWarn>$(NoWarn);CS8625</NoWarn>
|
|
<!-- We dont need to add null annotation within the ref for explicit interface methods. -->
|
|
<NoWarn>$(NoWarn);CS8617</NoWarn>
|
|
<!-- No symbols are produced for ref assemblies, but some parts of the SDK still expect pdbs, so we explicitly tell it there are none. -->
|
|
<!-- Must be set after importing Arcade to override its defaults. -->
|
|
<DebugType>none</DebugType>
|
|
<!-- Don't try to publish PDBs for ref assemblies that have none. -->
|
|
<PublishWindowsPdb>false</PublishWindowsPdb>
|
|
</PropertyGroup>
|
|
|
|
|
|
<!-- All reference assemblies should have a ReferenceAssemblyAttribute and the 0x70 flag which prevents them from loading. -->
|
|
<ItemGroup Condition="'$(IsReferenceAssemblyProject)' == 'true'">
|
|
<AssemblyAttribute Include="System.Runtime.CompilerServices.ReferenceAssemblyAttribute" />
|
|
<AssemblyAttribute Include="System.Reflection.AssemblyFlags">
|
|
<_Parameter1>(System.Reflection.AssemblyNameFlags)0x70</_Parameter1>
|
|
<_Parameter1_IsLiteral>true</_Parameter1_IsLiteral>
|
|
</AssemblyAttribute>
|
|
</ItemGroup>
|
|
|
|
<PropertyGroup Condition="'$(IsSourceProject)' == 'true'">
|
|
<!-- Must be defined in a props file as imports in Microsoft.DotNet.ApiCompat.Task.targets depend on it. -->
|
|
<ApiCompatValidateAssemblies>true</ApiCompatValidateAssemblies>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Condition="'$(IsGeneratorProject)' == 'true'">
|
|
<!-- Unique assembly versions increases(3x) the compiler throughput during reference package updates. -->
|
|
<AutoGenerateAssemblyVersion>true</AutoGenerateAssemblyVersion>
|
|
<!-- To suppress warnings about resetting the assembly version.-->
|
|
<AssemblyVersion />
|
|
<!-- Enforce extended rules around API usages in analyzers and generators to ensure our generators follow best practices. -->
|
|
<EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules>
|
|
</PropertyGroup>
|
|
|
|
<!-- Warnings that should be disabled in our test projects. -->
|
|
<PropertyGroup Condition="'$(IsTestProject)' == 'true' or '$(IsTestSupportProject)' == 'true' or '$(IsTrimmingTestProject)' == 'true'">
|
|
<!-- we need to re-enable BinaryFormatter within test projects since some tests exercise these code paths to ensure compat -->
|
|
<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
|
|
<!-- For DotNetBuildSourceOnly, only the bundled BinaryFormatter is built which does not support serialization. -->
|
|
<EnableUnsafeBinaryFormatterSerialization Condition="'$(DotNetBuildSourceOnly)' == 'true'">false</EnableUnsafeBinaryFormatterSerialization>
|
|
<!-- don't warn on usage of BinaryFormatter or legacy serialization infrastructure from test projects -->
|
|
<NoWarn>$(NoWarn);SYSLIB0011;SYSLIB0050;SYSLIB0051</NoWarn>
|
|
<!-- don't warn about unnecessary trim warning suppressions. can be removed with preview 6. -->
|
|
<NoWarn>$(NoWarn);IL2121</NoWarn>
|
|
<!-- allow nullable annotated files to be incorporated into tests without warning -->
|
|
<Nullable Condition="'$(Nullable)' == '' and '$(Language)' == 'C#'">annotations</Nullable>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<CustomBeforeNoTargets>$(RepositoryEngineeringDir)NoTargetsSdk.BeforeTargets.targets</CustomBeforeNoTargets>
|
|
<CustomAfterTraversalTargets>$(RepositoryEngineeringDir)TraversalSdk.AfterTargets.targets</CustomAfterTraversalTargets>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<!-- Keep in sync with outputs defined in Microsoft.NETCore.Platforms.csproj. -->
|
|
<BundledRuntimeIdentifierGraphFile>$([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'Microsoft.NETCore.Platforms', 'runtime.json'))</BundledRuntimeIdentifierGraphFile>
|
|
<BundledRuntimeIdentifierGraphFile Condition="!Exists('$(BundledRuntimeIdentifierGraphFile)')">$([MSBuild]::NormalizePath('$(LibrariesProjectRoot)', 'Microsoft.NETCore.Platforms', 'src', 'runtime.json'))</BundledRuntimeIdentifierGraphFile>
|
|
</PropertyGroup>
|
|
|
|
</Project>
|