281 lines
12 KiB
XML
281 lines
12 KiB
XML
<Project>
|
|
|
|
<PropertyGroup>
|
|
<CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>
|
|
<CopyOutputSymbolsToOutputDirectory>false</CopyOutputSymbolsToOutputDirectory>
|
|
<OutputType>Library</OutputType>
|
|
<GenerateDependencyFile>false</GenerateDependencyFile>
|
|
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
|
<ResolvePackageDependenciesForBuild>false</ResolvePackageDependenciesForBuild>
|
|
<NonShipping>true</NonShipping>
|
|
<NoStdLib>true</NoStdLib>
|
|
<ProducesNoOutput>true</ProducesNoOutput>
|
|
</PropertyGroup>
|
|
|
|
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
|
|
|
|
<PropertyGroup>
|
|
<LanguageTargets>$(MSBuildToolsPath)\Microsoft.CSharp.targets</LanguageTargets>
|
|
|
|
<IsPackable>false</IsPackable>
|
|
|
|
<DeterministicSourcePaths>false</DeterministicSourcePaths>
|
|
<TargetFramework>$(CoreSdkTargetFramework)</TargetFramework>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<RedistLayoutPath>$(ArtifactsBinDir)redist\$(Configuration)\dotnet\</RedistLayoutPath>
|
|
<DotnetToTestPath>$(ArtifactsBinDir)redist\$(Configuration)\dotnet-with-previous-runtimes\</DotnetToTestPath>
|
|
<TestExecutionDirectory>$([MSBuild]::NormalizePath($(ArtifactsTmpDir), 'dotnetSdkTests'))</TestExecutionDirectory>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<SdkTest Include="Build" />
|
|
<SdkTest Include="Clean" />
|
|
<SdkTest Include="Pack" />
|
|
<SdkTest Include="Publish" />
|
|
<SdkTest Include="Rebuild" />
|
|
<SdkTest Include="Restore" />
|
|
<SdkTest Include="ToolPack" />
|
|
</ItemGroup>
|
|
|
|
<Target Name="GetRuntimesToInstall">
|
|
<PropertyGroup>
|
|
<Supports1xRuntimes>true</Supports1xRuntimes>
|
|
</PropertyGroup>
|
|
|
|
<ReadLinesFromFile File="/etc/os-release"
|
|
Condition="'$(OS)' != 'Windows_NT'">
|
|
<Output TaskParameter="Lines" PropertyName="OsReleaseContents"/>
|
|
</ReadLinesFromFile>
|
|
|
|
<!-- Set OsReleaseContents to Windows to make later comparisons easier -->
|
|
<PropertyGroup Condition="'$(OS)' == 'Windows_NT'">
|
|
<OsReleaseContents>Windows</OsReleaseContents>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Condition="$(OsReleaseContents.Contains('NAME=%22Ubuntu%22'))">
|
|
<Supports1xRuntimes Condition="$(OsReleaseContents.Contains('VERSION_ID=%2218.04%22'))">false</Supports1xRuntimes>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Condition="$(OsReleaseContents.Contains('NAME=Fedora'))">
|
|
<Supports1xRuntimes>false</Supports1xRuntimes>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Condition="$(OsReleaseContents.Contains('NAME=%22openSUSE Leap%22'))">
|
|
<Supports1xRuntimes>false</Supports1xRuntimes>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Condition="$(OsReleaseContents.Contains('NAME=%22Alpine Linux%22'))">
|
|
<Supports1xRuntimes>false</Supports1xRuntimes>
|
|
</PropertyGroup>
|
|
|
|
<!-- RHEL 6 does not appear to have the os-release file -->
|
|
<PropertyGroup Condition="'$(OsReleaseContents)' == ''">
|
|
<Supports1xRuntimes>false</Supports1xRuntimes>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup Condition="'$(Supports1xRuntimes)' == 'true'">
|
|
<RuntimeVersionToInstall Include="1.0.5" />
|
|
<RuntimeVersionToInstall Include="1.1.2" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<RuntimeVersionToInstall Include="2.1.0" />
|
|
<RuntimeVersionToInstall Include="2.2.5" />
|
|
</ItemGroup>
|
|
|
|
</Target>
|
|
|
|
<Target Name="SetupLayoutWithPreviousRuntimes" DependsOnTargets="GetRuntimesToInstall">
|
|
<ItemGroup>
|
|
<LayoutFilesToCopyToDotnetToTest Include="$(RedistLayoutPath)**"/>
|
|
<LayoutFilesToCopyToDotnetToTest>
|
|
<DestinationPath>$(DotnetToTestPath)%(RecursiveDir)%(Filename)%(Extension)</DestinationPath>
|
|
</LayoutFilesToCopyToDotnetToTest>
|
|
</ItemGroup>
|
|
<Copy SourceFiles="@(LayoutFilesToCopyToDotnetToTest)"
|
|
DestinationFiles="@(LayoutFilesToCopyToDotnetToTest->'%(DestinationPath)')"
|
|
SkipUnchangedFiles="true"/>
|
|
|
|
<MSBuild Projects="$(MSBuildProjectFullPath)"
|
|
Targets="InstallRuntimeToLayout"
|
|
Properties="RuntimeVersionToInstall=%(RuntimeVersionToInstall.Identity)"
|
|
BuildInParallel="false"/>
|
|
</Target>
|
|
|
|
<Target Name="InstallRuntimeToLayout">
|
|
<PropertyGroup>
|
|
<RuntimeTargetDirectory>$(DotnetToTestPath)shared\Microsoft.NETCore.App\$(RuntimeVersionToInstall)</RuntimeTargetDirectory>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(OS)' == 'Windows_NT'">
|
|
<InstallRuntimeCommand>powershell -NoLogo -NoProfile -ExecutionPolicy ByPass</InstallRuntimeCommand>
|
|
<InstallRuntimeCommand>$(InstallRuntimeCommand) "$(_DotNetRoot)dotnet-install.ps1"</InstallRuntimeCommand>
|
|
<InstallRuntimeCommand>$(InstallRuntimeCommand) -Version $(RuntimeVersionToInstall)</InstallRuntimeCommand>
|
|
<InstallRuntimeCommand>$(InstallRuntimeCommand) -InstallDir $(DotnetToTestPath)</InstallRuntimeCommand>
|
|
<InstallRuntimeCommand>$(InstallRuntimeCommand) -Runtime "dotnet"</InstallRuntimeCommand>
|
|
<InstallRuntimeCommand Condition="'$(Architecture)' != ''">$(InstallRuntimeCommand) -Architecture "$(Architecture)"</InstallRuntimeCommand>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(OS)' != 'Windows_NT'">
|
|
<InstallRuntimeCommand>/bin/bash</InstallRuntimeCommand>
|
|
<InstallRuntimeCommand>$(InstallRuntimeCommand) "$(_DotNetRoot)dotnet-install.sh"</InstallRuntimeCommand>
|
|
<InstallRuntimeCommand>$(InstallRuntimeCommand) --version $(RuntimeVersionToInstall)</InstallRuntimeCommand>
|
|
<InstallRuntimeCommand>$(InstallRuntimeCommand) --install-dir "$(DotnetToTestPath)"</InstallRuntimeCommand>
|
|
<InstallRuntimeCommand>$(InstallRuntimeCommand) --runtime "dotnet"</InstallRuntimeCommand>
|
|
<InstallRuntimeCommand Condition="'$(Architecture)' != ''">$(InstallRuntimeCommand) --architecture "$(Architecture)"</InstallRuntimeCommand>
|
|
</PropertyGroup>
|
|
|
|
<Exec Command="$(InstallRuntimeCommand)"
|
|
Condition="!Exists($(RuntimeTargetDirectory))"
|
|
IgnoreStandardErrorWarningFormat="true"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="RunSdkTests" DependsOnTargets="SetupLayoutWithPreviousRuntimes">
|
|
|
|
<!-- Isolate test working directory from higher-level Directory.Build files -->
|
|
<Copy SourceFiles="$(RepoRoot)TestAssets\Directory.Build.props;$(RepoRoot)TestAssets\Directory.Build.targets"
|
|
DestinationFolder="$(TestExecutionDirectory)"
|
|
SkipUnchangedFiles="true"
|
|
/>
|
|
|
|
<!-- Set up NuGet feeds -->
|
|
<PropertyGroup>
|
|
<GeneratedNuGetConfig>$(TestExecutionDirectory)\NuGet.config</GeneratedNuGetConfig>
|
|
<NugetConfigContents>
|
|
<![CDATA[
|
|
<configuration>
|
|
<packageSources>
|
|
<add key="dotnet-core" value="https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json" />
|
|
<add key="dotnet-windowsdesktop" value="https://dotnetfeed.blob.core.windows.net/dotnet-windowsdesktop/index.json" />
|
|
<add key="aspnet-aspnetcore" value="https://dotnetfeed.blob.core.windows.net/aspnet-aspnetcore/index.json" />
|
|
<add key="aspnet-aspnetcore-tooling" value="https://dotnetfeed.blob.core.windows.net/aspnet-aspnetcore-tooling/index.json" />
|
|
<add key="aspnet-entityframeworkcore" value="https://dotnetfeed.blob.core.windows.net/aspnet-entityframeworkcore/index.json" />
|
|
<add key="aspnet-extensions" value="https://dotnetfeed.blob.core.windows.net/aspnet-extensions/index.json" />
|
|
</packageSources>
|
|
</configuration>
|
|
]]>
|
|
</NugetConfigContents>
|
|
</PropertyGroup>
|
|
|
|
<WriteLinesToFile File="$(GeneratedNuGetConfig)"
|
|
Lines="$(NugetConfigContents)"
|
|
Overwrite="true" />
|
|
|
|
<!-- Allow test list to be overridden with ToolTestName property -->
|
|
<ItemGroup Condition="'$(ToolTestName)' != ''">
|
|
<SdkTest Remove="@(SdkTest)" />
|
|
<SdkTest Include="$(ToolTestName)" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<TestProjectToRun Include="$(MSBuildProjectFullPath)">
|
|
<AdditionalProperties>ToolTestName=%(SdkTest.Identity)</AdditionalProperties>
|
|
</TestProjectToRun>
|
|
</ItemGroup>
|
|
|
|
<MSBuild Projects="@(TestProjectToRun)"
|
|
Targets="RunTestsAsTool"
|
|
BuildInParallel="true"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="RunTestsAsTool">
|
|
<PropertyGroup>
|
|
<ToolCommandName>testSdk$(ToolTestName)</ToolCommandName>
|
|
<TestProjectName>Microsoft.NET.$(ToolTestName).Tests</TestProjectName>
|
|
<TestLocalToolFolder>$(ArtifactsTmpDir)$(ToolCommandName)\</TestLocalToolFolder>
|
|
</PropertyGroup>
|
|
|
|
<RemoveDir Directories="$(TestLocalToolFolder)" />
|
|
<MakeDir Directories="$(TestLocalToolFolder)" />
|
|
|
|
<MakeDir Directories="$(ArtifactsTestResultsDir)" />
|
|
|
|
<PropertyGroup Condition="'$(OS)' == 'Windows_NT'">
|
|
<ToolRunPrefix>$(ToolRunPrefix)set MSBuildSDKsPath=&& </ToolRunPrefix>
|
|
<ToolRunPrefix>$(ToolRunPrefix)set DOTNET_HOST_PATH=&& </ToolRunPrefix>
|
|
<ToolRunPrefix>$(ToolRunPrefix)set DOTNET_INSTALLDIR=&& </ToolRunPrefix>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(OS)' != 'Windows_NT'">
|
|
<ToolRunPrefix>$(ToolRunPrefix)unset MSBuildSDKsPath && </ToolRunPrefix>
|
|
<ToolRunPrefix>$(ToolRunPrefix)unset DOTNET_HOST_PATH && </ToolRunPrefix>
|
|
<ToolRunPrefix>$(ToolRunPrefix)unset DOTNET_INSTALLDIR && </ToolRunPrefix>
|
|
</PropertyGroup>
|
|
|
|
<Exec Command="$(ToolRunPrefix)dotnet new tool-manifest"
|
|
WorkingDirectory="$(TestLocalToolFolder)"/>
|
|
|
|
<PropertyGroup>
|
|
<SdkTestPackageVersion>$(MicrosoftNETSdkPackageVersion)</SdkTestPackageVersion>
|
|
<SdkTestPackageFeed>https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json</SdkTestPackageFeed>
|
|
|
|
<InstallToolCommand>dotnet tool install --local $(ToolCommandName)</InstallToolCommand>
|
|
|
|
<InstallToolCommand>$(InstallToolCommand) --version $(SdkTestPackageVersion)</InstallToolCommand>
|
|
<InstallToolCommand>$(InstallToolCommand) --add-source $(SdkTestPackageFeed)</InstallToolCommand>
|
|
</PropertyGroup>
|
|
|
|
<Exec Command="$(ToolRunPrefix)$(InstallToolCommand)"
|
|
WorkingDirectory="$(TestLocalToolFolder)"/>
|
|
|
|
<Exec Command="$(ToolRunPrefix)dotnet tool restore"
|
|
WorkingDirectory="$(TestLocalToolFolder)"/>
|
|
|
|
<PropertyGroup>
|
|
<ResultsXmlPath>$(ArtifactsTestResultsDir)$(TestProjectName).xml</ResultsXmlPath>
|
|
<ResultsHtmlPath>$(ArtifactsTestResultsDir)$(TestProjectName).html</ResultsHtmlPath>
|
|
<ResultsStdOutPath>$(ArtifactsLogDir)$(TestProjectName).log</ResultsStdOutPath>
|
|
|
|
<TestArgs>-noautoreporters -noRepoInference</TestArgs>
|
|
<TestArgs>$(TestArgs) -dotnetPath $(DotnetToTestPath)\dotnet</TestArgs>
|
|
<TestArgs>$(TestArgs) -testExecutionDirectory $(TestExecutionDirectory)</TestArgs>
|
|
<TestArgs>$(TestArgs) -testConfigFile "$(MSBuildThisFileDirectory)TestConfig.xml"</TestArgs>
|
|
<TestArgs>$(TestArgs) -xml "$(ResultsXmlPath)"</TestArgs>
|
|
<TestArgs>$(TestArgs) -html "$(ResultsHtmlPath)" $(TestRunnerAdditionalArguments)</TestArgs>
|
|
<TestArgs>$(TestArgs) > $(ResultsStdOutPath) 2>&1</TestArgs>
|
|
<TestArgs>$(TestArgs) -testList SdkIntegrationTests</TestArgs>
|
|
</PropertyGroup>
|
|
|
|
|
|
<PropertyGroup Condition="('$(OS)' == 'Windows_NT') And ('$(Architecture)' == 'x86')">
|
|
<!-- Add list of tests to skip on x86 -->
|
|
<TestArgs>$(TestArgs) -testConfigFile "$(MSBuildThisFileDirectory)TestsToSkipx86.xml"</TestArgs>
|
|
</PropertyGroup>
|
|
|
|
<Exec Command="$(ToolRunPrefix)dotnet tool run $(ToolCommandName) -- $(TestArgs)"
|
|
WorkingDirectory="$(TestLocalToolFolder)" />
|
|
</Target>
|
|
|
|
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
|
|
|
|
<!-- Remove items which light up build logic which could generate warnings / errors -->
|
|
<ItemGroup>
|
|
<EmbeddedResource Remove="@(EmbeddedResource)" />
|
|
<Reference Remove="@(Reference)" />
|
|
<PackageReference Remove="@(PackageReference)" />
|
|
<ProjectReference Remove="@(ProjectReference)" />
|
|
<SwrFile Remove="@(SwrFile)" />
|
|
</ItemGroup>
|
|
|
|
<PropertyGroup>
|
|
<TargetPath></TargetPath>
|
|
<!-- Prevent projects referencing this from trying to pass us to the compiler -->
|
|
</PropertyGroup>
|
|
|
|
<Target Name="CoreCompile" />
|
|
<!-- Prevent Csc from being called -->
|
|
<Target Name="GenerateTargetFrameworkMonikerAttribute" />
|
|
<!-- Don't generate TFM attribute -->
|
|
<Target Name="RuntimeImplementationProjectOutputGroup" />
|
|
<!-- Group always attempts resolve runtime, regardless of <CopyNuGetImplementations>-->
|
|
<Target Name="GetReferenceAssemblyPaths" />
|
|
<!-- Don't go looking for framewoek reference assemblies-->
|
|
<Target Name="GetFrameworkPaths" />
|
|
<!-- ^ -->
|
|
|
|
<Target Name="GetBuildVersion" />
|
|
<!-- For Packages projects, which use GetNuGetPackageVersionEx which depends on GetBuildVersion -->
|
|
<Target Name="Pack" />
|
|
|
|
<Target Name="Test" DependsOnTargets="RunSdkTests" />
|
|
</Project>
|