From 292d65eed2a5cc6075ee6883893cc7f86b3bec3b Mon Sep 17 00:00:00 2001 From: Sarah Oslund Date: Mon, 31 Aug 2020 09:47:27 -0700 Subject: [PATCH 1/3] Switching to 4 part Windows versions --- ...crosoft.NET.TargetFrameworkInference.targets | 11 ++++------- ...NET.WindowsSdkSupportedTargetPlatforms.props | 6 +++--- ...enThatWeWantToBuildAWindowsDesktopProject.cs | 17 +++++++++++------ ...GivenThatWeWantToBuildWithATargetPlatform.cs | 2 +- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.TargetFrameworkInference.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.TargetFrameworkInference.targets index a00804849e05..26361b3c1a76 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.TargetFrameworkInference.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.TargetFrameworkInference.targets @@ -52,9 +52,7 @@ Copyright (c) .NET Foundation. All rights reserved. $([MSBuild]::GetTargetFrameworkIdentifier('$(TargetFramework)')) - v$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)', 3)) - <_TargetFrameworkVersionLength Condition="$(TargetFrameworkVersion.EndsWith('.0'))" >$([MSBuild]::Subtract($(TargetFrameworkVersion.Length), 2)) - $(TargetFrameworkVersion.Substring(0, $(_TargetFrameworkVersionLength))) + v$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)', 2)) $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) - $([MSBuild]::GetTargetPlatformVersion('$(TargetFramework)', 3)) - - <_TargetPlatformVersionLength Condition="$(TargetPlatformVersion.EndsWith('.0'))" >$([MSBuild]::Subtract($(TargetPlatformVersion.Length), 2)) - $(TargetPlatformVersion.Substring(0, $(_TargetPlatformVersionLength))) + $([MSBuild]::GetTargetPlatformVersion('$(TargetFramework)', 4)) + $([MSBuild]::GetTargetPlatformVersion('$(TargetFramework)', 2)) + Windows diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props index b27e16caff12..5041005639a4 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props @@ -13,9 +13,9 @@ Copyright (c) .NET Foundation. All rights reserved. - - - + + + diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs index ab364978b385..f2b1c304d1b9 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs @@ -122,17 +122,22 @@ public void It_fails_if_windows_target_platform_version_is_invalid() .HaveStdOutContaining("NETSDK1140"); } - [WindowsOnlyFact] - public void It_succeeds_if_windows_target_platform_version_has_trailing_zeros() + [WindowsOnlyTheory] + [InlineData(true)] + [InlineData(false)] + public void It_succeeds_if_windows_target_platform_version_does_not_have_trailing_zeros(bool setInTargetframework) { var testProject = new TestProject() { Name = "ValidWindowsVersion", IsSdkProject = true, - TargetFrameworks = "net5.0" + TargetFrameworks = setInTargetframework ? "net5.0-windows10.0.18362" : "net5.0" }; - testProject.AdditionalProperties["TargetPlatformIdentifier"] = "Windows"; - testProject.AdditionalProperties["TargetPlatformVersion"] = "10.0.18362.0"; // We must set this manually because if we set it in the TFM we remove the trailing zeroes. + if (!setInTargetframework) + { + testProject.AdditionalProperties["TargetPlatformIdentifier"] = "Windows"; + testProject.AdditionalProperties["TargetPlatformVersion"] = "10.0.18362"; + } var testAsset = _testAssetsManager.CreateTestProject(testProject); var buildCommand = new BuildCommand(testAsset); @@ -144,7 +149,7 @@ public void It_succeeds_if_windows_target_platform_version_has_trailing_zeros() getValuesCommand.Execute() .Should() .Pass(); - getValuesCommand.GetValues().Should().BeEquivalentTo(new[] { "10.0.18362" }); + getValuesCommand.GetValues().Should().BeEquivalentTo(new[] { "10.0.18362.0" }); } [Fact] diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildWithATargetPlatform.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildWithATargetPlatform.cs index a4144f548dab..a3ab272969ce 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildWithATargetPlatform.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildWithATargetPlatform.cs @@ -25,7 +25,7 @@ public GivenThatWeWantToBuildWithATargetPlatform(ITestOutputHelper log) : base(l [InlineData("net5.0-Windows7.0", ".NETCoreApp", "v5.0", "Windows", "7.0")] [InlineData("net5.0-WINDOWS7.0", ".NETCoreApp", "v5.0", "Windows", "7.0")] [InlineData("net5.0-windows", ".NETCoreApp", "v5.0", "Windows", "7.0")] - [InlineData("net5.0-windows10.0.19041", ".NETCoreApp", "v5.0", "Windows", "10.0.19041")] + [InlineData("net5.0-windows10.0.19041.0", ".NETCoreApp", "v5.0", "Windows", "10.0.19041.0")] public void It_defines_target_platform_from_target_framework(string targetFramework, string expectedTargetFrameworkIdentifier, string expectedTargetFrameworkVersion, string expectedTargetPlatformIdentifier, string expectedTargetPlatformVersion) { var testProj = new TestProject() From 82569d2346df0ce7d805454cf25ba65eb848c687 Mon Sep 17 00:00:00 2001 From: Sarah Oslund Date: Mon, 31 Aug 2020 15:04:04 -0700 Subject: [PATCH 2/3] PR feedback --- ...osoft.NET.TargetFrameworkInference.targets | 6 ++--- .../GivenThatWeWantToBuildALibrary.cs | 2 +- ...venThatWeWantToBuildWithATargetPlatform.cs | 22 +++++++++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.TargetFrameworkInference.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.TargetFrameworkInference.targets index 26361b3c1a76..cbacddc088d0 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.TargetFrameworkInference.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.TargetFrameworkInference.targets @@ -58,10 +58,10 @@ Copyright (c) .NET Foundation. All rights reserved. - - $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) + + $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) $([MSBuild]::GetTargetPlatformVersion('$(TargetFramework)', 4)) - $([MSBuild]::GetTargetPlatformVersion('$(TargetFramework)', 2)) + $([MSBuild]::GetTargetPlatformVersion('$(TargetFramework)', 2)) Windows diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildALibrary.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildALibrary.cs index 0a63fa9c611f..7023057847b6 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildALibrary.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildALibrary.cs @@ -454,7 +454,7 @@ public void It_implicitly_defines_compilation_constants_for_the_target_platform( [Theory] [InlineData(new[] { "1.0", "1.1" }, "ios", "1.1", new[] { "IOS", "IOS1_1", "IOS1_0" })] [InlineData(new[] { "11.11", "12.12", "13.13" }, "android", "12.12", new[] { "ANDROID", "ANDROID11_11", "ANDROID12_12" })] - [InlineData(new string[] { /* Use the built in SdkSupportedTargetPlatform items */}, "windows", "10.0.19041", new[] { "WINDOWS", "WINDOWS7_0", "WINDOWS8_0", "WINDOWS10_0_17763", "WINDOWS10_0_18362", "WINDOWS10_0_19041" })] + [InlineData(new string[] { /* Use the built in SdkSupportedTargetPlatform items */}, "windows", "10.0.19041.0", new[] { "WINDOWS", "WINDOWS7_0", "WINDOWS8_0", "WINDOWS10_0_17763_0", "WINDOWS10_0_18362_0", "WINDOWS10_0_19041_0" })] public void It_implicitly_defines_compilation_constants_for_the_target_platform_with_backwards_compatibility(string[] sdkSupportedTargetPlatform, string targetPlatformIdentifier, string targetPlatformVersion, string[] expectedDefines) { var targetFramework = "net5.0"; diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildWithATargetPlatform.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildWithATargetPlatform.cs index a3ab272969ce..76c761bbe9fe 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildWithATargetPlatform.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildWithATargetPlatform.cs @@ -63,6 +63,28 @@ public void It_defines_target_platform_from_target_framework(string targetFramew assertValue("TargetPlatformDisplayName", $"{expectedTargetPlatformIdentifier} {expectedTargetPlatformVersion}"); } + [WindowsOnlyRequiresMSBuildVersionFact("16.8.0.41402")] + public void It_defines_target_platform_from_target_framework_with_explicit_version() + { + var targetPlatformVersion = ""; + var targetFramework = "net5.0-windows"; + var testProj = new TestProject() + { + Name = "TargetPlatformTests", + IsSdkProject = true, + TargetFrameworks = targetFramework + }; + testProj.AdditionalProperties["TargetPlatformVersion"] = targetPlatformVersion; + var testAsset = _testAssetsManager.CreateTestProject(testProj); + + var getValuesCommand = new GetValuesCommand(Log, Path.Combine(testAsset.Path, testProj.Name), targetFramework, "TargetPlatformIdentifier"); + getValuesCommand + .Execute() + .Should() + .Pass(); + getValuesCommand.GetValues().ShouldBeEquivalentTo(new[] { "Windows" }); + } + [Fact] public void It_fails_on_unsupported_os() { From 12839ff473454c5399a9d0b8aecebb0b3f13764c Mon Sep 17 00:00:00 2001 From: Sarah Oslund Date: Tue, 1 Sep 2020 08:13:28 -0700 Subject: [PATCH 3/3] Fixing target platform version test value --- .../GivenThatWeWantToBuildWithATargetPlatform.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildWithATargetPlatform.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildWithATargetPlatform.cs index 76c761bbe9fe..33a7e20f0d54 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildWithATargetPlatform.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildWithATargetPlatform.cs @@ -66,7 +66,7 @@ public void It_defines_target_platform_from_target_framework(string targetFramew [WindowsOnlyRequiresMSBuildVersionFact("16.8.0.41402")] public void It_defines_target_platform_from_target_framework_with_explicit_version() { - var targetPlatformVersion = ""; + var targetPlatformVersion = "10.0.19041.0"; var targetFramework = "net5.0-windows"; var testProj = new TestProject() {