From cc14f5f0dfbc9acb4f0375e49f2ca08125a91c0e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 15 Aug 2022 16:28:18 +0000 Subject: [PATCH 1/8] Update dependencies from https://github.com/dotnet/arcade build 20220812.2 Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SignTool , Microsoft.DotNet.XUnitExtensions From Version 6.0.0-beta.22411.3 -> To Version 6.0.0-beta.22412.2 --- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 4 ++-- eng/common/templates/post-build/post-build.yml | 8 ++++---- global.json | 4 ++-- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9410eae51f76..09f54a602126 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -287,22 +287,22 @@ - + https://github.com/dotnet/arcade - 778552f02f31d50ec1c3c18a872cc482d04aec75 + 41323ecb0b2312980381bfdbb75afd2dae2b266b - + https://github.com/dotnet/arcade - 778552f02f31d50ec1c3c18a872cc482d04aec75 + 41323ecb0b2312980381bfdbb75afd2dae2b266b - + https://github.com/dotnet/arcade - 778552f02f31d50ec1c3c18a872cc482d04aec75 + 41323ecb0b2312980381bfdbb75afd2dae2b266b - + https://github.com/dotnet/arcade - 778552f02f31d50ec1c3c18a872cc482d04aec75 + 41323ecb0b2312980381bfdbb75afd2dae2b266b https://github.com/dotnet/runtime diff --git a/eng/Versions.props b/eng/Versions.props index 09c4a14688bc..8793a6860ff1 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -28,7 +28,7 @@ $(NewtonsoftJsonPackageVersion) 4.0.0 6.0.0 - 6.0.0-beta.22411.3 + 6.0.0-beta.22412.2 3.1.0 4.3.0 4.3.0 @@ -172,7 +172,7 @@ 4.19.2 4.19.0 - 6.0.0-beta.22411.3 + 6.0.0-beta.22412.2 4.8.2 6.0.0-beta.22262.1 diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml index 24e92a275a4f..270607126811 100644 --- a/eng/common/templates/post-build/post-build.yml +++ b/eng/common/templates/post-build/post-build.yml @@ -101,7 +101,7 @@ stages: # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: name: NetCore1ESPool-Internal - demands: ImageOverride -equals Build.Server.Amd64.VS2019 + demands: ImageOverride -equals windows.vs2019.amd64 steps: - template: setup-maestro-vars.yml @@ -138,7 +138,7 @@ stages: # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: name: NetCore1ESPool-Internal - demands: ImageOverride -equals Build.Server.Amd64.VS2019 + demands: ImageOverride -equals windows.vs2019.amd64 steps: - template: setup-maestro-vars.yml parameters: @@ -198,7 +198,7 @@ stages: # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: name: NetCore1ESPool-Internal - demands: ImageOverride -equals Build.Server.Amd64.VS2019 + demands: ImageOverride -equals windows.vs2019.amd64 steps: - template: setup-maestro-vars.yml parameters: @@ -255,7 +255,7 @@ stages: # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: name: NetCore1ESPool-Internal - demands: ImageOverride -equals Build.Server.Amd64.VS2019 + demands: ImageOverride -equals windows.vs2019.amd64 steps: - template: setup-maestro-vars.yml parameters: diff --git a/global.json b/global.json index 161bfb8e4d05..59ed34178ac4 100644 --- a/global.json +++ b/global.json @@ -11,7 +11,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.22411.3", - "Microsoft.DotNet.Helix.Sdk": "6.0.0-beta.22411.3" + "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.22412.2", + "Microsoft.DotNet.Helix.Sdk": "6.0.0-beta.22412.2" } } From f3bf2770aa30b738066e3cc296fa9677469d3164 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 15 Aug 2022 17:22:32 +0000 Subject: [PATCH 2/8] Update dependencies from https://github.com/dotnet/msbuild build 20220815.1 Microsoft.Build , Microsoft.Build.Localization From Version 17.3.0 -> To Version 17.3.1 --- NuGet.config | 2 +- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index 05b69c453ffd..8626fcf35ccc 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9410eae51f76..55e830c4828f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -66,13 +66,13 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 55fb7ef977e7d120dc12f0960edcff0739d7ee0e - + https://github.com/dotnet/msbuild - f67e3d35edb936d1b2d4a00f74be446f5c4ba495 + 2badb37d109910fbd3155cf8743224b7a27494d8 - + https://github.com/dotnet/msbuild - f67e3d35edb936d1b2d4a00f74be446f5c4ba495 + 2badb37d109910fbd3155cf8743224b7a27494d8 https://github.com/dotnet/fsharp diff --git a/eng/Versions.props b/eng/Versions.props index 09c4a14688bc..eae46c04dfb5 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -97,7 +97,7 @@ - 17.3.0 + 17.3.1 - 4.3.0-3.22412.4 - 4.3.0-3.22412.4 - 4.3.0-3.22412.4 - 4.3.0-3.22412.4 - 4.3.0-3.22412.4 - 4.3.0-3.22412.4 + 4.3.0-3.22415.1 + 4.3.0-3.22415.1 + 4.3.0-3.22415.1 + 4.3.0-3.22415.1 + 4.3.0-3.22415.1 + 4.3.0-3.22415.1 From 912acaa606a01d6bd3572f9c2093bfa429200a02 Mon Sep 17 00:00:00 2001 From: Chet Husk Date: Mon, 15 Aug 2022 16:24:12 -0500 Subject: [PATCH 4/8] Parser for actual MSBuild Property option syntax (#27086) Adds a parser that can handle all the msbuild property variations, so that arguments that contain a semicolon- delimited key/value list are correctly escaped. --- .../MSBuildPropertyParser.cs | 93 +++++++++++++++++++ src/Cli/dotnet/OptionForwardingExtensions.cs | 5 +- .../MSBuildArgumentCommandLineParserTests.cs | 3 + 3 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 src/Cli/Microsoft.DotNet.Cli.Utils/MSBuildPropertyParser.cs diff --git a/src/Cli/Microsoft.DotNet.Cli.Utils/MSBuildPropertyParser.cs b/src/Cli/Microsoft.DotNet.Cli.Utils/MSBuildPropertyParser.cs new file mode 100644 index 000000000000..505178a7f58d --- /dev/null +++ b/src/Cli/Microsoft.DotNet.Cli.Utils/MSBuildPropertyParser.cs @@ -0,0 +1,93 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Text; + +#nullable enable + +namespace Microsoft.DotNet.Cli.Utils; + +public static class MSBuildPropertyParser { + public static IEnumerable<(string key, string value)> ParseProperties(string input) { + var currentPos = 0; + StringBuilder currentKey = new StringBuilder(); + StringBuilder currentValue = new StringBuilder(); + + (string key, string value) EmitAndReset() { + var key = currentKey.ToString(); + var value= currentValue.ToString(); + currentKey.Clear(); + currentValue.Clear(); + return (key, value); + } + + char? Peek() => currentPos < input.Length ? input[currentPos] : null; + + bool TryConsume(out char? consumed) { + if(input.Length > currentPos) { + consumed = input[currentPos]; + currentPos++; + return true; + } else { + consumed = null; + return false; + } + } + + void ParseKey() { + while (TryConsume(out var c) && c != '=') { + currentKey.Append(c); + } + } + + void ParseQuotedValue() { + TryConsume(out var leadingQuote); // consume the leading quote, which we know is there + currentValue.Append(leadingQuote); + while(TryConsume(out char? c)) { + currentValue.Append(c); + if (c == '"') { + // we're done + return; + } + if (c == '\\' && Peek() == '"') + { + // consume the escaped quote + TryConsume(out var c2); + currentValue.Append(c2); + } + } + } + + void ParseUnquotedValue() { + while(TryConsume(out char? c) && c != ';') { + currentValue.Append(c); + } + } + + void ParseValue() { + if (Peek() == '"') { + ParseQuotedValue(); + } else { + ParseUnquotedValue(); + } + } + + (string key, string value) ParseKeyValue() { + ParseKey(); + ParseValue(); + return EmitAndReset(); + } + + bool AtEnd() => currentPos == input.Length; + + while (!(AtEnd())) { + yield return ParseKeyValue(); + if (Peek() is char c && (c == ';' || c== ',')) { + TryConsume(out _); // swallow the next semicolon or comma delimiter + } + } + } +} diff --git a/src/Cli/dotnet/OptionForwardingExtensions.cs b/src/Cli/dotnet/OptionForwardingExtensions.cs index b5d24dd29555..38223e45dc5b 100644 --- a/src/Cli/dotnet/OptionForwardingExtensions.cs +++ b/src/Cli/dotnet/OptionForwardingExtensions.cs @@ -21,8 +21,9 @@ public static class OptionForwardingExtensions public static ForwardedOption ForwardAsProperty(this ForwardedOption option) => option .SetForwardingFunction((optionVals) => optionVals - .Select(optionVal => optionVal.Replace(";", "%3B")) // must escape semicolon-delimited property values when forwarding them to MSBuild - .Select(optionVal => $"{option.Aliases.FirstOrDefault()}:{optionVal}") + .SelectMany(Microsoft.DotNet.Cli.Utils.MSBuildPropertyParser.ParseProperties) + // must escape semicolon-delimited property values when forwarding them to MSBuild + .Select(keyValue => $"{option.Aliases.FirstOrDefault()}:{keyValue.key}={keyValue.value.Replace(";", "%3B")}") ); public static Option ForwardAsMany(this ForwardedOption option, Func> format) => option.SetForwardingFunction(format); diff --git a/src/Tests/dotnet.Tests/ParserTests/MSBuildArgumentCommandLineParserTests.cs b/src/Tests/dotnet.Tests/ParserTests/MSBuildArgumentCommandLineParserTests.cs index 2ba24972fa82..90be35893665 100644 --- a/src/Tests/dotnet.Tests/ParserTests/MSBuildArgumentCommandLineParserTests.cs +++ b/src/Tests/dotnet.Tests/ParserTests/MSBuildArgumentCommandLineParserTests.cs @@ -49,6 +49,9 @@ public void MSBuildArgumentsAreForwardedCorrectly(string[] arguments, bool build [InlineData(new string[] { "-p:teamcity_buildConfName=\"Build, Test and Publish\"" }, new string[] { "--property:teamcity_buildConfName=\"Build, Test and Publish\"" })] [InlineData(new string[] { "-p:prop1=true", "-p:prop2=false" }, new string[] { "--property:prop1=true", "--property:prop2=false" })] [InlineData(new string[] { "-p:prop1=\".;/opt/usr\"" }, new string[] { "--property:prop1=\".%3B/opt/usr\"" })] + [InlineData(new string[] { "-p:prop1=true;prop2=false;prop3=\"wut\";prop4=\"1;2;3\"" }, new string[]{ "--property:prop1=true", "--property:prop2=false", "--property:prop3=\"wut\"", "--property:prop4=\"1%3B2%3B3\""})] + [InlineData(new string[] { "-p:prop4=\"1;2;3\"" }, new string[]{ "--property:prop4=\"1%3B2%3B3\""})] + [InlineData(new string[] { "-p:prop4=\"1 ;2 ;3 \"" }, new string[]{ "--property:prop4=\"1 %3B2 %3B3 \""})] public void Can_pass_msbuild_properties_safely(string[] tokens, string[] forwardedTokens) { var forwardingFunction = (CommonOptions.PropertiesOption as ForwardedOption).GetForwardingFunction(); var result = CommonOptions.PropertiesOption.Parse(tokens); From a5e6507e3940da2bd88f55c6f42f63bc075618bd Mon Sep 17 00:00:00 2001 From: Daniel Plaisted Date: Tue, 16 Aug 2022 10:51:51 -0400 Subject: [PATCH 5/8] Support different Windows SDK package versions for different target frameworks If there are multiple matching WindowsSdkSupportedTargetPlatformVersion items, choose the one with the highest minimum version. That way it is possible to use older packages when targeting older versions of .NET, and newer packages for newer versions of .NET --- ...reateWindowsSdkKnownFrameworkReferences.cs | 13 ++++- ...ThatWeWantToBuildAWindowsDesktopProject.cs | 54 +++++++++++++++---- 2 files changed, 56 insertions(+), 11 deletions(-) diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/CreateWindowsSdkKnownFrameworkReferences.cs b/src/Tasks/Microsoft.NET.Build.Tasks/CreateWindowsSdkKnownFrameworkReferences.cs index 94a65656ee68..03354607a22a 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/CreateWindowsSdkKnownFrameworkReferences.cs +++ b/src/Tasks/Microsoft.NET.Build.Tasks/CreateWindowsSdkKnownFrameworkReferences.cs @@ -55,6 +55,8 @@ protected override void ExecuteCore() else { var normalizedTargetFrameworkVersion = ProcessFrameworkReferences.NormalizeVersion(new Version(TargetFrameworkVersion)); + + var matchingKnownFrameworkReferences = new List<(Version minimumNetVersion, TaskItem knownFrameworkReference)>(); foreach (var supportedWindowsVersion in WindowsSdkSupportedTargetPlatformVersions) { var windowsSdkPackageVersion = supportedWindowsVersion.GetMetadata("WindowsSdkPackageVersion"); @@ -62,18 +64,25 @@ protected override void ExecuteCore() if (!string.IsNullOrEmpty(windowsSdkPackageVersion)) { var minimumNETVersion = supportedWindowsVersion.GetMetadata("MinimumNETVersion"); + Version normalizedMinimumVersion = new Version(0, 0, 0); if (!string.IsNullOrEmpty(minimumNETVersion)) { - var normalizedMinimumVersion = ProcessFrameworkReferences.NormalizeVersion(new Version(minimumNETVersion)); + normalizedMinimumVersion = ProcessFrameworkReferences.NormalizeVersion(new Version(minimumNETVersion)); if (normalizedMinimumVersion > normalizedTargetFrameworkVersion) { continue; } } - knownFrameworkReferences.Add(CreateKnownFrameworkReference(windowsSdkPackageVersion, TargetFrameworkVersion, supportedWindowsVersion.ItemSpec)); + matchingKnownFrameworkReferences.Add((normalizedMinimumVersion, CreateKnownFrameworkReference(windowsSdkPackageVersion, TargetFrameworkVersion, supportedWindowsVersion.ItemSpec))); + } } + + // If there are multiple matching WindowsSdkSupportedTargetPlatformVersion items, choose the one with the highest minimum version. That way it is possible to + // use older packages when targeting older versions of .NET, and newer packages for newer versions of .NET + var highestMinimumVersion = matchingKnownFrameworkReferences.Max(t => t.minimumNetVersion); + knownFrameworkReferences.AddRange(matchingKnownFrameworkReferences.Where(t => t.minimumNetVersion == highestMinimumVersion).Select(t => t.knownFrameworkReference)); } KnownFrameworkReferences = knownFrameworkReferences.ToArray(); diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs index 267654705889..77502bedb5db 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs @@ -403,6 +403,50 @@ public void ItUsesCorrectWindowsSdkPackVersion(string targetFramework, bool? use var testAsset = _testAssetsManager.CreateTestProject(testProject, identifier: targetFramework + useWindowsSDKPreview + windowsSdkPackageVersion); + string referencedWindowsSdkVersion = GetReferencedWindowsSdkVersion(testAsset); + + // The patch version of the Windows SDK Ref pack will change over time, so we use a '*' in the expected version to indicate that and replace it with + // the 4th part of the version number of the resolved package. + if (expectedWindowsSdkPackageVersion.Contains('*')) + { + expectedWindowsSdkPackageVersion = expectedWindowsSdkPackageVersion.Replace("*", new Version(referencedWindowsSdkVersion).Revision.ToString()); + } + + referencedWindowsSdkVersion.Should().Be(expectedWindowsSdkPackageVersion); + } + + [Theory] + [InlineData("net5.0-windows10.0.22000.0", "10.0.22000.25")] + [InlineData("net6.0-windows10.0.22000.0", "10.0.22000.26")] + public void ItUsesTheHighestMatchingWindowsSdkPackageVersion2(string targetFramework, string expectedWindowsSdkPackageVersion) + { + var testProject = new TestProject() + { + TargetFrameworks = targetFramework + }; + + var testAsset = _testAssetsManager.CreateTestProject(testProject) + .WithProjectChanges(project => + { + // Add items for available SDK versions for test + var testItems = XElement.Parse(@" + + + + + + "); + + project.Root.Add(testItems); + }); + + string referencedWindowsSdkVersion = GetReferencedWindowsSdkVersion(testAsset); + referencedWindowsSdkVersion.Should().Be(expectedWindowsSdkPackageVersion); + + } + + private string GetReferencedWindowsSdkVersion(TestAsset testAsset) + { var getValueCommand = new GetValuesCommand(testAsset, "PackageDownload", GetValuesCommand.ValueType.Item); getValueCommand.ShouldRestore = false; getValueCommand.DependsOnTargets = "_CheckForInvalidConfigurationAndPlatform;CollectPackageDownloads"; @@ -419,15 +463,7 @@ public void ItUsesCorrectWindowsSdkPackVersion(string targetFramework, bool? use packageDownloadVersion[0].Should().Be('['); packageDownloadVersion.Last().Should().Be(']'); - // The patch version of the Windows SDK Ref pack will change over time, so we use a '*' in the expected version to indicate that and replace it with - // the 4th part of the version number of the resolved package. - var trimmedPackageDownloadVersion = packageDownloadVersion.Substring(1, packageDownloadVersion.Length - 2); - if (expectedWindowsSdkPackageVersion.Contains('*')) - { - expectedWindowsSdkPackageVersion = expectedWindowsSdkPackageVersion.Replace("*", new Version(trimmedPackageDownloadVersion).Revision.ToString()); - } - - trimmedPackageDownloadVersion.Should().Be(expectedWindowsSdkPackageVersion); + return packageDownloadVersion.Substring(1, packageDownloadVersion.Length - 2); } private string GetPropertyValue(TestAsset testAsset, string propertyName) From c3fcc83b7cc09fccf0309bb5f133ac37be5d06c4 Mon Sep 17 00:00:00 2001 From: Daniel Plaisted Date: Tue, 16 Aug 2022 13:12:08 -0400 Subject: [PATCH 6/8] Fix logic to handle different Windows SDK versions correctly --- ...reateWindowsSdkKnownFrameworkReferences.cs | 28 ++++++++++++++----- ...ThatWeWantToBuildAWindowsDesktopProject.cs | 9 ++++-- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/CreateWindowsSdkKnownFrameworkReferences.cs b/src/Tasks/Microsoft.NET.Build.Tasks/CreateWindowsSdkKnownFrameworkReferences.cs index 03354607a22a..7b2e2a433f50 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/CreateWindowsSdkKnownFrameworkReferences.cs +++ b/src/Tasks/Microsoft.NET.Build.Tasks/CreateWindowsSdkKnownFrameworkReferences.cs @@ -56,7 +56,8 @@ protected override void ExecuteCore() { var normalizedTargetFrameworkVersion = ProcessFrameworkReferences.NormalizeVersion(new Version(TargetFrameworkVersion)); - var matchingKnownFrameworkReferences = new List<(Version minimumNetVersion, TaskItem knownFrameworkReference)>(); + var knownFrameworkReferencesByWindowsSdkVersion = new Dictionary>(); + foreach (var supportedWindowsVersion in WindowsSdkSupportedTargetPlatformVersions) { var windowsSdkPackageVersion = supportedWindowsVersion.GetMetadata("WindowsSdkPackageVersion"); @@ -74,15 +75,28 @@ protected override void ExecuteCore() } } - matchingKnownFrameworkReferences.Add((normalizedMinimumVersion, CreateKnownFrameworkReference(windowsSdkPackageVersion, TargetFrameworkVersion, supportedWindowsVersion.ItemSpec))); - + if (!Version.TryParse(supportedWindowsVersion.ItemSpec, out var windowsSdkVersionParsed)) + { + continue; + } + + if (!knownFrameworkReferencesByWindowsSdkVersion.ContainsKey(windowsSdkVersionParsed)) + { + knownFrameworkReferencesByWindowsSdkVersion[windowsSdkVersionParsed] = new(); + } + + knownFrameworkReferencesByWindowsSdkVersion[windowsSdkVersionParsed].Add((normalizedMinimumVersion, CreateKnownFrameworkReference(windowsSdkPackageVersion, TargetFrameworkVersion, supportedWindowsVersion.ItemSpec))); + } } - // If there are multiple matching WindowsSdkSupportedTargetPlatformVersion items, choose the one with the highest minimum version. That way it is possible to - // use older packages when targeting older versions of .NET, and newer packages for newer versions of .NET - var highestMinimumVersion = matchingKnownFrameworkReferences.Max(t => t.minimumNetVersion); - knownFrameworkReferences.AddRange(matchingKnownFrameworkReferences.Where(t => t.minimumNetVersion == highestMinimumVersion).Select(t => t.knownFrameworkReference)); + foreach (var knownFrameworkReferencesForSdkVersion in knownFrameworkReferencesByWindowsSdkVersion.Values) + { + // If there are multiple WindowsSdkSupportedTargetPlatformVersion items for the same Windows SDK version, choose the one with the highest minimum version. + // That way it is possible to use older packages when targeting older versions of .NET, and newer packages for newer versions of .NET + var highestMinimumVersion = knownFrameworkReferencesForSdkVersion.Max(t => t.minimumNetVersion); + knownFrameworkReferences.AddRange(knownFrameworkReferencesForSdkVersion.Where(t => t.minimumNetVersion == highestMinimumVersion).Select(t => t.knownFrameworkReference)); + } } KnownFrameworkReferences = knownFrameworkReferences.ToArray(); diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs index 77502bedb5db..75e52af93b8f 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs @@ -415,10 +415,11 @@ public void ItUsesCorrectWindowsSdkPackVersion(string targetFramework, bool? use referencedWindowsSdkVersion.Should().Be(expectedWindowsSdkPackageVersion); } - [Theory] + [WindowsOnlyTheory] [InlineData("net5.0-windows10.0.22000.0", "10.0.22000.25")] [InlineData("net6.0-windows10.0.22000.0", "10.0.22000.26")] - public void ItUsesTheHighestMatchingWindowsSdkPackageVersion2(string targetFramework, string expectedWindowsSdkPackageVersion) + [InlineData("net6.0-windows10.0.19041.0", "10.0.19041.25")] + public void ItUsesTheHighestMatchingWindowsSdkPackageVersion(string targetFramework, string expectedWindowsSdkPackageVersion) { var testProject = new TestProject() { @@ -433,8 +434,12 @@ public void ItUsesTheHighestMatchingWindowsSdkPackageVersion2(string targetFrame + + + + "); project.Root.Add(testItems); From 492d770d2dfecb6f31b9dab5f08849eaa5fff066 Mon Sep 17 00:00:00 2001 From: Daniel Plaisted Date: Tue, 16 Aug 2022 16:06:32 -0400 Subject: [PATCH 7/8] Use separate test folders --- .../GivenThatWeWantToBuildAWindowsDesktopProject.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs index 75e52af93b8f..b6a6ec6e22a4 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs @@ -426,7 +426,7 @@ public void ItUsesTheHighestMatchingWindowsSdkPackageVersion(string targetFramew TargetFrameworks = targetFramework }; - var testAsset = _testAssetsManager.CreateTestProject(testProject) + var testAsset = _testAssetsManager.CreateTestProject(testProject, identifier: targetFramework) .WithProjectChanges(project => { // Add items for available SDK versions for test From 973a1e3c8ba068881e81e900ebb187991d8a6221 Mon Sep 17 00:00:00 2001 From: Tanay Parikh Date: Tue, 16 Aug 2022 15:50:14 -0700 Subject: [PATCH 8/8] .NET 6 Fix .NET MAUI Blazor Scoped CSS Hot Reload (#27108) * [Blazor] Update the base path to use IntermediateOutputPath (#26765) It was done a different way because a while ago we were computing the path inside a global PropertyGroup and when we changed it to be computed inside a target, we didn't change it to just rely on the IntermediateOutputPath. (cherry picked from commit ab4d89fd82aa96c2bb28f84802c394c2869c01a5) * [Blazor] Allow customizing the static web assets base manifest paths if defined by the environment (#27102) (cherry picked from commit bcb1cd2b792b482ced6a60df23b189afc39ede03) Co-authored-by: Javier Calvarro Nelson --- .../Targets/Microsoft.NET.Sdk.Razor.StaticWebAssets.targets | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/RazorSdk/Targets/Microsoft.NET.Sdk.Razor.StaticWebAssets.targets b/src/RazorSdk/Targets/Microsoft.NET.Sdk.Razor.StaticWebAssets.targets index a787e3e91e0c..0236b2de34ea 100644 --- a/src/RazorSdk/Targets/Microsoft.NET.Sdk.Razor.StaticWebAssets.targets +++ b/src/RazorSdk/Targets/Microsoft.NET.Sdk.Razor.StaticWebAssets.targets @@ -296,8 +296,7 @@ Copyright (c) .NET Foundation. All rights reserved. - <_StaticWebAssetsManifestBase>$(BaseIntermediateOutputPath)$(Configuration)\ - <_StaticWebAssetsManifestBase Condition="'$(AppendTargetFrameworkToOutputPath)' != 'false'">$(_StaticWebAssetsManifestBase)$(TargetFramework.ToLowerInvariant())\ + <_StaticWebAssetsManifestBase Condition="'$(_StaticWebAssetsManifestBase)' == ''">$(IntermediateOutputPath) _content/$(PackageId) Default $(_StaticWebAssetsManifestBase)staticwebassets.build.json