diff --git a/Directory.Build.targets b/Directory.Build.targets index 98d5d0185ce9ed85c4b181b1501c3b2db4b1037f..519185d7180a86b3746c3f897e7f1661fe80f9e1 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 8b31bd01c0a44d032386b443e985011dd74823ed..b7353f92da39ab3f272538608b1e92cc77e5f0a9 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 7928d3f6cffd18980dae46e68ee2e829fa9e6dc7..854f90ab5c204ab180d9017b30ebabd7ccfafca4 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>