Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update sourcebuild configuration to build net previous and net current #4856

Merged
merged 14 commits into from
Jan 29, 2024
6 changes: 6 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,12 @@
<!-- Naming is based on dotnet/runtime one -->
<NetFrameworkMinimum>net462</NetFrameworkMinimum>
<NetCoreAppMinimum>netcoreapp3.1</NetCoreAppMinimum>
<!--
Arcade is making things hard to work with. This property is unset when it's value is equal to NetMinimum.
Evangelink marked this conversation as resolved.
Show resolved Hide resolved
https://github.com/dotnet/arcade/blob/66c9c5397d599af40f2a94989241944f5a73442a/src/Microsoft.DotNet.Arcade.Sdk/tools/TargetFrameworkDefaults.props#L16-L18
Because I don't want to complexify further the logic on VSTest just for that, I will set it to NetMinimum.
-->
<NetPrevious Condition=" $(NetPrevious) == '' ">$(NetMinimum)</NetPrevious>
</PropertyGroup>

<!-- Build & pack config -->
Expand Down
6 changes: 2 additions & 4 deletions Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@

<!-- Source build properties -->
<PropertyGroup Condition=" '$(DotNetBuildFromSource)' == 'true' ">
Evangelink marked this conversation as resolved.
Show resolved Hide resolved
<!-- Force setting TargetFrameworks to net7.0 only if it was set -->
<TargetFrameworks Condition=" '$(TargetFrameworks)' != '' ">$(NetCurrent)</TargetFrameworks>
<!-- Force setting TargetFramework to net7.0 only if it was set -->
<TargetFramework Condition=" '$(TargetFramework)' != '' ">$(NetCurrent)</TargetFramework>
<!-- Force setting TargetFrameworks to previous and current net -->
<TargetFrameworks>$(NetPrevious);$(NetCurrent)</TargetFrameworks>
Copy link
Member

@ViktorHofer ViktorHofer Jan 31, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Even when looking at the PR description I don't understand why vstest needs to build NetPrevious under source-build when not building the product. Why is that?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because we insert in both net8 and net9 and it's causing some insertion. That's the solution recommended by @MichaelSimons.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This issue is that the dependent repos (e.g. SDK) target different TFM depending on the version. Therefore to support the repo level source-builds, this repo has to target multiple TFMs. This pattern is used in other repos like roslyn.

Fair feedback regarding documentation/tracability.

</PropertyGroup>

<!-- Test project settings -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<NetStandardImplicitPackageVersion>2.0.0</NetStandardImplicitPackageVersion>
<AssemblyName>Microsoft.TestPlatform.Build</AssemblyName>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
<IsTestProject>false</IsTestProject>
Expand All @@ -12,20 +11,24 @@
<Choose>
<When Condition=" '$(DotNetBuildFromSource)' == 'true' ">
<PropertyGroup>
<Tfm>$(NetCurrent)</Tfm>
<NuspecFile>Microsoft.TestPlatform.Build.sourcebuild.nuspec</NuspecFile>
</PropertyGroup>

<ItemGroup Label="NuGet">
<NuspecProperty Include="SourceBuildTfmCurrent=$(NetCurrent)" />
<NuspecProperty Include="SourceBuildTfmPrevious=$(NetPrevious)" />
</ItemGroup>
</When>
<Otherwise>
<PropertyGroup>
<Tfm>netstandard2.0</Tfm>
<NuspecFile>Microsoft.TestPlatform.Build.nuspec</NuspecFile>
</PropertyGroup>
</Otherwise>
</Choose>

<PropertyGroup>
<!-- This package is included even in source build -->
<IsPackable>true</IsPackable>
<NuspecFile>Microsoft.TestPlatform.Build.nuspec</NuspecFile>
<NuspecBasePath>$(OutputPath)</NuspecBasePath>
<PackageId>Microsoft.TestPlatform.Build</PackageId>
<PackageTags>vstest visual-studio unittest testplatform mstest microsoft test testing</PackageTags>
Expand All @@ -34,10 +37,6 @@
</PackageDescription>
</PropertyGroup>

<ItemGroup Label="NuGet">
<NuspecProperty Include="tfm=$(Tfm)" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkPackageVersion)" />
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCorePackageVersion)" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,29 @@
$CommonMetadataElements$

<dependencies>
<group targetFramework="$tfm$" />
<group targetFramework="netstandard2.0" />
</dependencies>
</metadata>

<files>
$CommonFileElements$

<file src="$tfm$/Microsoft.TestPlatform.targets" target="runtimes/any/native" />
<file src="$tfm$/Microsoft.TestPlatform.Build.dll" target="lib/$tfm$" />
<file src="netstandard2.0/Microsoft.TestPlatform.targets" target="runtimes/any/native" />
<file src="netstandard2.0/Microsoft.TestPlatform.Build.dll" target="lib/netstandard2.0" />

<!-- Add localized resources -->
<file src="$tfm$/cs/Microsoft.TestPlatform.Build.resources.dll" target="lib/$tfm$/cs" />
<file src="$tfm$/de/Microsoft.TestPlatform.Build.resources.dll" target="lib/$tfm$/de" />
<file src="$tfm$/es/Microsoft.TestPlatform.Build.resources.dll" target="lib/$tfm$/es" />
<file src="$tfm$/fr/Microsoft.TestPlatform.Build.resources.dll" target="lib/$tfm$/fr" />
<file src="$tfm$/it/Microsoft.TestPlatform.Build.resources.dll" target="lib/$tfm$/it" />
<file src="$tfm$/ja/Microsoft.TestPlatform.Build.resources.dll" target="lib/$tfm$/ja" />
<file src="$tfm$/ko/Microsoft.TestPlatform.Build.resources.dll" target="lib/$tfm$/ko" />
<file src="$tfm$/pl/Microsoft.TestPlatform.Build.resources.dll" target="lib/$tfm$/pl" />
<file src="$tfm$/pt-BR/Microsoft.TestPlatform.Build.resources.dll" target="lib/$tfm$/pt-BR" />
<file src="$tfm$/ru/Microsoft.TestPlatform.Build.resources.dll" target="lib/$tfm$/ru" />
<file src="$tfm$/tr/Microsoft.TestPlatform.Build.resources.dll" target="lib/$tfm$/tr" />
<file src="$tfm$/zh-Hans/Microsoft.TestPlatform.Build.resources.dll" target="lib/$tfm$/zh-Hans" />
<file src="$tfm$/zh-Hant/Microsoft.TestPlatform.Build.resources.dll" target="lib/$tfm$/zh-Hant" />
<file src="netstandard2.0/cs/Microsoft.TestPlatform.Build.resources.dll" target="lib/netstandard2.0/cs" />
<file src="netstandard2.0/de/Microsoft.TestPlatform.Build.resources.dll" target="lib/netstandard2.0/de" />
<file src="netstandard2.0/es/Microsoft.TestPlatform.Build.resources.dll" target="lib/netstandard2.0/es" />
<file src="netstandard2.0/fr/Microsoft.TestPlatform.Build.resources.dll" target="lib/netstandard2.0/fr" />
<file src="netstandard2.0/it/Microsoft.TestPlatform.Build.resources.dll" target="lib/netstandard2.0/it" />
<file src="netstandard2.0/ja/Microsoft.TestPlatform.Build.resources.dll" target="lib/netstandard2.0/ja" />
<file src="netstandard2.0/ko/Microsoft.TestPlatform.Build.resources.dll" target="lib/netstandard2.0/ko" />
<file src="netstandard2.0/pl/Microsoft.TestPlatform.Build.resources.dll" target="lib/netstandard2.0/pl" />
<file src="netstandard2.0/pt-BR/Microsoft.TestPlatform.Build.resources.dll" target="lib/netstandard2.0/pt-BR" />
<file src="netstandard2.0/ru/Microsoft.TestPlatform.Build.resources.dll" target="lib/netstandard2.0/ru" />
<file src="netstandard2.0/tr/Microsoft.TestPlatform.Build.resources.dll" target="lib/netstandard2.0/tr" />
<file src="netstandard2.0/zh-Hans/Microsoft.TestPlatform.Build.resources.dll" target="lib/netstandard2.0/zh-Hans" />
<file src="netstandard2.0/zh-Hant/Microsoft.TestPlatform.Build.resources.dll" target="lib/netstandard2.0/zh-Hant" />
</files>
</package>
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
$CommonMetadataElements$

<dependencies>
<group targetFramework="$SourceBuildTfmPrevious$" />
<group targetFramework="$SourceBuildTfmCurrent$" />
</dependencies>
</metadata>

<files>
$CommonFileElements$

<file src="$SourceBuildTfmPrevious$/Microsoft.TestPlatform.targets" target="runtimes/any/native" />
<file src="$SourceBuildTfmCurrent$/Microsoft.TestPlatform.targets" target="runtimes/any/native" />
<file src="$SourceBuildTfmPrevious$/Microsoft.TestPlatform.Build.dll" target="lib/$SourceBuildTfmPrevious$" />
<file src="$SourceBuildTfmCurrent$/Microsoft.TestPlatform.Build.dll" target="lib/$SourceBuildTfmCurrent$" />

<!-- Add localized resources -->
<file src="$SourceBuildTfmPrevious$/cs/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmPrevious$/cs" />
<file src="$SourceBuildTfmCurrent$/cs/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmCurrent$/cs" />
<file src="$SourceBuildTfmPrevious$/de/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmPrevious$/de" />
<file src="$SourceBuildTfmCurrent$/de/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmCurrent$/de" />
<file src="$SourceBuildTfmPrevious$/es/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmPrevious$/es" />
<file src="$SourceBuildTfmCurrent$/es/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmCurrent$/es" />
<file src="$SourceBuildTfmPrevious$/fr/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmPrevious$/fr" />
<file src="$SourceBuildTfmCurrent$/fr/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmCurrent$/fr" />
<file src="$SourceBuildTfmPrevious$/it/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmPrevious$/it" />
<file src="$SourceBuildTfmCurrent$/it/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmCurrent$/it" />
<file src="$SourceBuildTfmPrevious$/ja/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmPrevious$/ja" />
<file src="$SourceBuildTfmCurrent$/ja/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmCurrent$/ja" />
<file src="$SourceBuildTfmPrevious$/ko/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmPrevious$/ko" />
<file src="$SourceBuildTfmCurrent$/ko/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmCurrent$/ko" />
<file src="$SourceBuildTfmPrevious$/pl/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmPrevious$/pl" />
<file src="$SourceBuildTfmCurrent$/pl/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmCurrent$/pl" />
<file src="$SourceBuildTfmPrevious$/pt-BR/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmPrevious$/pt-BR" />
<file src="$SourceBuildTfmCurrent$/pt-BR/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmCurrent$/pt-BR" />
<file src="$SourceBuildTfmPrevious$/ru/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmPrevious$/ru" />
<file src="$SourceBuildTfmCurrent$/ru/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmCurrent$/ru" />
<file src="$SourceBuildTfmPrevious$/tr/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmPrevious$/tr" />
<file src="$SourceBuildTfmCurrent$/tr/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmCurrent$/tr" />
<file src="$SourceBuildTfmPrevious$/zh-Hans/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmPrevious$/zh-Hans" />
<file src="$SourceBuildTfmCurrent$/zh-Hans/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmCurrent$/zh-Hans" />
<file src="$SourceBuildTfmPrevious$/zh-Hant/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmPrevious$/zh-Hant" />
<file src="$SourceBuildTfmCurrent$/zh-Hant/Microsoft.TestPlatform.Build.resources.dll" target="lib/$SourceBuildTfmCurrent$/zh-Hant" />
</files>
</package>
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(RepoRoot)src\Microsoft.TestPlatform.ObjectModel\Microsoft.TestPlatform.ObjectModel.csproj" />
<ProjectReference Include="$(RepoRoot)src\Microsoft.TestPlatform.CoreUtilities\Microsoft.TestPlatform.CoreUtilities.csproj" />
<ProjectReference Include="$(RepoRoot)src\Microsoft.TestPlatform.CoreUtilities\Microsoft.TestPlatform.CoreUtilities.csproj" />
</ItemGroup>
<ItemGroup Condition=" '$(DotNetBuildFromSource)' != 'true' ">
<ProjectReference Include="$(RepoRoot)src\DataCollectors\DumpMinitool\DumpMinitool.csproj" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
</PropertyGroup>

<PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@
<PropertyGroup>
<NuspecFile>Microsoft.TestPlatform.CLI.sourcebuild.nuspec</NuspecFile>
</PropertyGroup>

<ItemGroup Label="NuGet">
<NuspecProperty Include="SourceBuildTfmCurrent=$(NetCurrent)" />
<NuspecProperty Include="SourceBuildTfmPrevious=$(NetPrevious)" />
</ItemGroup>
</When>
<Otherwise>
<PropertyGroup>
Expand All @@ -31,7 +36,6 @@
<ItemGroup Label="NuGet">
<NuspecProperty Include="SrcPackageFolder=$(SrcPackageFolder)" />
<NuspecProperty Include="TesthostRuntimeconfig=$(RepoRoot)temp\testhost" />
<NuspecProperty Include="SourceBuildTfm=$(NetCurrent)" />
</ItemGroup>

<PropertyGroup>
Expand Down
Loading