From c1ed3f3cf8c7d56b12c4da3a0406bea9bb6cadfa Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Mon, 9 Nov 2020 11:27:43 -0800 Subject: [PATCH] [master] Target 6.0.0 shared framework in global tools in servicing (#27600) - #19108 - ensure the packaged runtimeconfig.json file uses the 6.0.0 shared framework - disable `$(TargetLatestDotNetRuntime)` in tool projects - skip `@(FrameworkReference)` item update if `$(TargetLatestDotNetRuntime)` is disabled - essentially a no-op until after the 6.0.0 release nit: Move `$(PackAsTool)` settings together --- Directory.Build.targets | 7 +------ eng/Workarounds.targets | 5 ++--- src/Tools/Directory.Build.targets | 18 ++++++++++++++---- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/Directory.Build.targets b/Directory.Build.targets index 98d5d0185ce..519185d7180 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -57,11 +57,6 @@ <SuppressDependenciesWhenPacking Condition="'$(SuppressDependenciesWhenPacking)' == '' AND '$(IsAnalyzersProject)' == 'true'">true</SuppressDependenciesWhenPacking> </PropertyGroup> - <PropertyGroup Condition="'$(PackAsTool)' == 'true' AND '$(IsShippingPackage)' == 'true'"> - <!-- This is a requirement for Microsoft tool packages only. --> - <PackAsToolShimRuntimeIdentifiers>win-x64;win-x86</PackAsToolShimRuntimeIdentifiers> - </PropertyGroup> - <PropertyGroup Condition=" '$(MSBuildProjectExtension)' == '.csproj' "> <PackageId Condition=" '$(PackageId)' == '' ">$(AssemblyName)</PackageId> <IsPackable @@ -111,7 +106,7 @@ <IsImplementationProject Condition=" '$(IsImplementationProject)' == '' AND '$(IsAnalyzersProject)' != 'true' AND '$(IsTestAssetProject)' != 'true' AND '$(IsTestProject)' != 'true' AND '$(IsBenchmarkProject)' != 'true' AND '$(IsSampleProject)' != 'true' ">true</IsImplementationProject> <!-- This determines whether a project is available as a <Reference> to other projects in this repo. --> - <IsProjectReferenceProvider Condition=" '$(IsProjectReferenceProvider)' == '' AND '$(IsImplementationProject)' == 'true' AND '$(PackAsTool)' != 'true' ">true</IsProjectReferenceProvider> + <IsProjectReferenceProvider Condition=" '$(IsProjectReferenceProvider)' == '' AND '$(IsImplementationProject)' == 'true' ">true</IsProjectReferenceProvider> <HasReferenceAssembly Condition=" '$(TargetFramework)' == '$(DefaultNetCoreTargetFramework)' AND '$(IsAspNetCoreApp)' == 'true' ">true</HasReferenceAssembly> diff --git a/eng/Workarounds.targets b/eng/Workarounds.targets index 8b31bd01c0a..b7353f92da3 100644 --- a/eng/Workarounds.targets +++ b/eng/Workarounds.targets @@ -9,10 +9,9 @@ <!-- Reference base shared framework at incoming dependency flow version, not bundled sdk version. --> <FrameworkReference Update="Microsoft.NETCore.App" - Condition="'$(TargetFramework)' == '$(DefaultNetCoreTargetFramework)'" + Condition=" '$(TargetFramework)' == '$(DefaultNetCoreTargetFramework)' AND '$(TargetLatestDotNetRuntime)' != 'false' " RuntimeFrameworkVersion="$(MicrosoftNETCoreAppRuntimeVersion)" - TargetingPackVersion="$(MicrosoftNETCoreAppRefPackageVersion)" - /> + TargetingPackVersion="$(MicrosoftNETCoreAppRefPackageVersion)" /> </ItemGroup> <!-- diff --git a/src/Tools/Directory.Build.targets b/src/Tools/Directory.Build.targets index 7928d3f6cff..854f90ab5c2 100644 --- a/src/Tools/Directory.Build.targets +++ b/src/Tools/Directory.Build.targets @@ -1,10 +1,20 @@ <Project> - <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.targets))\Directory.Build.targets" /> - - <PropertyGroup> - <UseLatestPackageReferences Condition=" '$(PackAsTool)' == 'true' ">true</UseLatestPackageReferences> + <PropertyGroup Condition=" '$(PackAsTool)' == 'true' "> + <!-- Microsoft tool packages are required to target both x64 and x86. --> + <PackAsToolShimRuntimeIdentifiers Condition=" '$(IsShippingPackage)' == 'true' ">win-x64;win-x86</PackAsToolShimRuntimeIdentifiers> + <!-- None of the tool projects are project reference providers. --> + <IsProjectReferenceProvider>false</IsProjectReferenceProvider> + <!-- + Target the default version of .NET Core in tool projects to maximize the compatible environments. Must be set + before importing root Directory.Build.targets. + --> + <TargetLatestDotNetRuntime Condition=" '$(IsServicingBuild)' == 'true' ">false</TargetLatestDotNetRuntime> + <!-- Tool projects publish before packing. Packages should contain the latest bits. --> + <UseLatestPackageReferences>true</UseLatestPackageReferences> </PropertyGroup> + <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.targets))\Directory.Build.targets" /> + <Target Name="CleanPublishDir" AfterTargets="CoreClean"> <RemoveDir Directories="$(PublishDir)" /> </Target> -- GitLab