diff --git a/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/ChooseBestP2PTargetFrameworkTask.cs b/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/ChooseBestP2PTargetFrameworkTask.cs index eed6ca19627..f94675d072b 100644 --- a/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/ChooseBestP2PTargetFrameworkTask.cs +++ b/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/ChooseBestP2PTargetFrameworkTask.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Build.Framework; +using System; using System.IO; namespace Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk @@ -34,11 +35,17 @@ public override bool Execute() targetFrameworksValue = projectReference.GetMetadata("TargetFrameworks"); } string[] targetFrameworks = targetFrameworksValue.Split(';'); + + string referringTargetFramework = projectReference.GetMetadata("ReferringTargetFramework"); + if (string.IsNullOrWhiteSpace(referringTargetFramework)) + { + referringTargetFramework = TargetFramework; + } - string bestTargetFramework = targetFrameworkResolver.GetBestSupportedTargetFramework(targetFrameworks, TargetFramework); + string bestTargetFramework = targetFrameworkResolver.GetBestSupportedTargetFramework(targetFrameworks, referringTargetFramework); if (bestTargetFramework == null) { - Log.LogError($"Not able to find a compatible supported target framework for {TargetFramework} in Project {Path.GetFileName(projectReference.ItemSpec)}. The Supported Configurations are {string.Join(", ", targetFrameworks)}"); + Log.LogError($"Not able to find a compatible supported target framework for {referringTargetFramework} in Project {Path.GetFileName(projectReference.ItemSpec)}. The Supported Configurations are {string.Join(", ", targetFrameworks)}"); } projectReference.SetMetadata("SetTargetFramework", "TargetFramework=" + bestTargetFramework); diff --git a/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk.targets b/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk.targets index cbbccefde91..3072bc45636 100644 --- a/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk.targets +++ b/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk.targets @@ -67,23 +67,25 @@ Targets="GetTargetFrameworks" BuildInParallel="$(BuildInParallel)" RemoveProperties="TargetFramework;RuntimeIdentifier" + Condition="'%(ProjectReference.SkipGetTargetFrameworkProperties)' != 'true'" SkipNonexistentTargets="true"> - + - + <_OriginalTargetFramework Condition="'$(_OriginalTargetFramework)' == ''">$(TargetFramework) - + - +