From e246e75895ca88bcf8b7e85f1f22ab8cda360a50 Mon Sep 17 00:00:00 2001 From: Eirik Tsarpalis Date: Wed, 5 Apr 2023 17:26:45 +0100 Subject: [PATCH 1/4] Add a JsonSerializerIsReflectionEnabledByDefault property --- .../KitchenSink/TestApp/TestApp.csproj | 1 + .../targets/Microsoft.NET.Publish.targets | 1 + .../targets/Microsoft.NET.Sdk.targets | 5 ++++ ...tWeWantToPublishAProjectWithAllFeatures.cs | 1 + .../GivenThatWeWantToPublishAnAotApp.cs | 25 +++++++++++++++++++ 5 files changed, 33 insertions(+) diff --git a/src/Assets/TestProjects/KitchenSink/TestApp/TestApp.csproj b/src/Assets/TestProjects/KitchenSink/TestApp/TestApp.csproj index 08c45bd4dcae..04d1272b8ae9 100644 --- a/src/Assets/TestProjects/KitchenSink/TestApp/TestApp.csproj +++ b/src/Assets/TestProjects/KitchenSink/TestApp/TestApp.csproj @@ -26,6 +26,7 @@ false true true + true false <_EnableConsumingManagedCodeFromNativeHosting>false false diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets index 8360910d1e42..17bb2a243a18 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets @@ -20,6 +20,7 @@ Copyright (c) .NET Foundation. All rights reserved. <_IsTrimmingEnabled Condition="'$(_IsTrimmingEnabled)' == '' And ('$(PublishTrimmed)' == 'true' Or '$(IsTrimmable)' == 'true')">true <_IsTrimmingEnabled Condition="'$(_IsTrimmingEnabled)' == ''">false false + false diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets index e069faa4289f..86da451d130c 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets @@ -479,6 +479,11 @@ Copyright (c) .NET Foundation. All rights reserved. Value="$(DynamicCodeSupport)" Trim="true" /> + + () + .Should().BeFalse(); + } + private void CheckIlcVersions(string projectPath, string targetFramework, string rid, string expectedVersion) { // Compiler version matches expected version From 40f70063a89ac6880474b37b781b18529fe7420a Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 13 Apr 2023 08:34:39 -0500 Subject: [PATCH 2/4] Remove ASP.NET's JSON feature switch and replace it with the System.Text.Json one. Remove the defaulting of the System.Text.Json feature switch until a decision can be made when to turn it off by default. --- .../targets/Microsoft.NET.Publish.targets | 1 - .../targets/Microsoft.NET.Sdk.targets | 20 +++++++-------- .../GivenThatWeWantToPublishAnAotApp.cs | 25 ------------------- .../PublishTests.cs | 6 ++--- ...icrosoft.NET.Sdk.Web.ProjectSystem.targets | 2 +- src/WebSdk/Web/Sdk/Sdk.targets | 14 ----------- 6 files changed, 14 insertions(+), 54 deletions(-) diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets index 17bb2a243a18..8360910d1e42 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets @@ -20,7 +20,6 @@ Copyright (c) .NET Foundation. All rights reserved. <_IsTrimmingEnabled Condition="'$(_IsTrimmingEnabled)' == '' And ('$(PublishTrimmed)' == 'true' Or '$(IsTrimmable)' == 'true')">true <_IsTrimmingEnabled Condition="'$(_IsTrimmingEnabled)' == ''">false false - false diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets index 86da451d130c..8b2cc95cfbd8 100644 --- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets +++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets @@ -479,11 +479,6 @@ Copyright (c) .NET Foundation. All rights reserved. Value="$(DynamicCodeSupport)" Trim="true" /> - - - - + + + + diff --git a/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToPublishAnAotApp.cs b/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToPublishAnAotApp.cs index 9d20c948e360..cb9154770b0d 100644 --- a/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToPublishAnAotApp.cs +++ b/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToPublishAnAotApp.cs @@ -747,31 +747,6 @@ public void It_builds_with_dynamiccodesupport_false_when_publishaot_true(string .Should().BeFalse(); } - [RequiresMSBuildVersionTheory("17.0.0.32901")] - [InlineData(ToolsetInfo.CurrentTargetFramework)] - public void It_builds_with_jsonserializerisreflectionenabledbydefault_false_when_publishaot_true(string targetFramework) - { - var projectName = "JsonSerializerIsReflectionEnabledByDefaultFalseApp"; - var testProject = CreateHelloWorldTestProject(targetFramework, projectName, true); - testProject.AdditionalProperties["PublishAot"] = "true"; - var testAsset = _testAssetsManager.CreateTestProject(testProject); - - var buildCommand = new BuildCommand(testAsset); - buildCommand - .Execute() - .Should() - .Pass(); - - string outputDirectory = buildCommand.GetOutputDirectory(targetFramework: targetFramework).FullName; - string runtimeConfigFile = Path.Combine(outputDirectory, $"{projectName}.runtimeconfig.json"); - string runtimeConfigContents = File.ReadAllText(runtimeConfigFile); - - JObject runtimeConfig = JObject.Parse(runtimeConfigContents); - JToken configProperties = runtimeConfig["runtimeOptions"]["configProperties"]; - configProperties["System.Text.Json.JsonSerializer.IsReflectionEnabledByDefault"].Value() - .Should().BeFalse(); - } - private void CheckIlcVersions(string projectPath, string targetFramework, string rid, string expectedVersion) { // Compiler version matches expected version diff --git a/src/Tests/Microsoft.NET.Sdk.Web.Tests/PublishTests.cs b/src/Tests/Microsoft.NET.Sdk.Web.Tests/PublishTests.cs index 2e4142f2889b..6bd56d0722d3 100644 --- a/src/Tests/Microsoft.NET.Sdk.Web.Tests/PublishTests.cs +++ b/src/Tests/Microsoft.NET.Sdk.Web.Tests/PublishTests.cs @@ -47,8 +47,8 @@ public void TrimmingOptions_Are_Defaulted_Correctly_On_Trimmed_Apps(string targe JsonNode runtimeConfig = JsonNode.Parse(runtimeConfigContents); JsonNode configProperties = runtimeConfig["runtimeOptions"]["configProperties"]; - configProperties["Microsoft.AspNetCore.EnsureJsonTrimmability"].GetValue() - .Should().BeTrue(); + configProperties["System.Text.Json.JsonSerializer.IsReflectionEnabledByDefault"].GetValue() + .Should().BeFalse(); } [Theory] @@ -80,7 +80,7 @@ public void TrimmingOptions_Are_Defaulted_Correctly_On_Aot_Apps(string targetFra string responseFile = Path.Combine(outputDirectory, "native", $"{projectName}.ilc.rsp"); var responseFileContents = File.ReadLines(responseFile); - responseFileContents.Should().Contain("--feature:Microsoft.AspNetCore.EnsureJsonTrimmability=true"); + responseFileContents.Should().Contain("--feature:System.Text.Json.JsonSerializer.IsReflectionEnabledByDefault=false"); File.Exists(Path.Combine(outputDirectory, "web.config")).Should().BeFalse(); } diff --git a/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.ProjectSystem.targets b/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.ProjectSystem.targets index 27c0f4162282..bc28d1185b0b 100644 --- a/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.ProjectSystem.targets +++ b/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.ProjectSystem.targets @@ -48,7 +48,7 @@ Copyright (c) .NET Foundation. All rights reserved. - true + false - - - - - From 542389edb8444dac2a4cd070edcbf6debd981468 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Thu, 13 Apr 2023 08:40:07 -0500 Subject: [PATCH 3/4] Fix test --- src/Assets/TestProjects/KitchenSink/TestApp/TestApp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Assets/TestProjects/KitchenSink/TestApp/TestApp.csproj b/src/Assets/TestProjects/KitchenSink/TestApp/TestApp.csproj index 04d1272b8ae9..0c4bb268304d 100644 --- a/src/Assets/TestProjects/KitchenSink/TestApp/TestApp.csproj +++ b/src/Assets/TestProjects/KitchenSink/TestApp/TestApp.csproj @@ -26,7 +26,7 @@ false true true - true + false false <_EnableConsumingManagedCodeFromNativeHosting>false false From c80d36d107768e345f8d5ece01a731d7886bb9b0 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Fri, 14 Apr 2023 07:20:26 -0500 Subject: [PATCH 4/4] Adding back ASP.NET JSON feature switch until the aspnetcore libraries move off of it. --- .../Microsoft.NET.Sdk.Web.Tests/PublishTests.cs | 3 +++ .../Microsoft.NET.Sdk.Web.ProjectSystem.targets | 1 + src/WebSdk/Web/Sdk/Sdk.targets | 14 ++++++++++++++ 3 files changed, 18 insertions(+) diff --git a/src/Tests/Microsoft.NET.Sdk.Web.Tests/PublishTests.cs b/src/Tests/Microsoft.NET.Sdk.Web.Tests/PublishTests.cs index 6bd56d0722d3..41d7514d1b49 100644 --- a/src/Tests/Microsoft.NET.Sdk.Web.Tests/PublishTests.cs +++ b/src/Tests/Microsoft.NET.Sdk.Web.Tests/PublishTests.cs @@ -47,6 +47,8 @@ public void TrimmingOptions_Are_Defaulted_Correctly_On_Trimmed_Apps(string targe JsonNode runtimeConfig = JsonNode.Parse(runtimeConfigContents); JsonNode configProperties = runtimeConfig["runtimeOptions"]["configProperties"]; + configProperties["Microsoft.AspNetCore.EnsureJsonTrimmability"].GetValue() + .Should().BeTrue(); configProperties["System.Text.Json.JsonSerializer.IsReflectionEnabledByDefault"].GetValue() .Should().BeFalse(); } @@ -80,6 +82,7 @@ public void TrimmingOptions_Are_Defaulted_Correctly_On_Aot_Apps(string targetFra string responseFile = Path.Combine(outputDirectory, "native", $"{projectName}.ilc.rsp"); var responseFileContents = File.ReadLines(responseFile); + responseFileContents.Should().Contain("--feature:Microsoft.AspNetCore.EnsureJsonTrimmability=true"); responseFileContents.Should().Contain("--feature:System.Text.Json.JsonSerializer.IsReflectionEnabledByDefault=false"); File.Exists(Path.Combine(outputDirectory, "web.config")).Should().BeFalse(); } diff --git a/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.ProjectSystem.targets b/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.ProjectSystem.targets index 8609ff710119..c9f36f9aafb9 100644 --- a/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.ProjectSystem.targets +++ b/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.ProjectSystem.targets @@ -48,6 +48,7 @@ Copyright (c) .NET Foundation. All rights reserved. + true false diff --git a/src/WebSdk/Web/Sdk/Sdk.targets b/src/WebSdk/Web/Sdk/Sdk.targets index f94aa521a535..f84173009eb9 100644 --- a/src/WebSdk/Web/Sdk/Sdk.targets +++ b/src/WebSdk/Web/Sdk/Sdk.targets @@ -30,6 +30,20 @@ Copyright (c) .NET Foundation. All rights reserved. + + + + + + <_WebLibraryPacksFolder Condition="'$(WebLibraryPacksFolder)' == ''">$([MSBuild]::EnsureTrailingSlash('$(MSBuildThisFileDirectory)'))../library-packs