From 50ef4fe95a07f659237ded1f02a57227035eb2db Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 17 Jan 2026 10:35:26 +0000 Subject: [PATCH 1/6] Initial plan From 850b54e89917c50ef7350b79533e1e4bb9e05870 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 17 Jan 2026 10:40:55 +0000 Subject: [PATCH 2/6] Refactor WebAssembly SDK pack tasks to use Runtime="NET" and single-target layout - Change Microsoft.NET.Sdk.WebAssembly.Pack.Tasks to single-target $(NetCoreAppToolCurrent) - Update GetFilesToPackage to place DLLs/PDBs directly in tools/ (no TFM subfolders) - Remove _WebAssemblySdkTasksTFM property logic from Browser.targets - Add Runtime="NET" attribute to all UsingTask declarations for the tasks Co-authored-by: maraf <10020471+maraf@users.noreply.github.com> --- .../Microsoft.NET.Sdk.WebAssembly.Browser.targets | 12 +++++------- .../Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj | 9 +++------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/mono/nuget/Microsoft.NET.Sdk.WebAssembly.Pack/build/Microsoft.NET.Sdk.WebAssembly.Browser.targets b/src/mono/nuget/Microsoft.NET.Sdk.WebAssembly.Pack/build/Microsoft.NET.Sdk.WebAssembly.Browser.targets index a1749101d987f7..f4ac3317cad8e4 100644 --- a/src/mono/nuget/Microsoft.NET.Sdk.WebAssembly.Pack/build/Microsoft.NET.Sdk.WebAssembly.Browser.targets +++ b/src/mono/nuget/Microsoft.NET.Sdk.WebAssembly.Pack/build/Microsoft.NET.Sdk.WebAssembly.Browser.targets @@ -56,19 +56,17 @@ Copyright (c) .NET Foundation. All rights reserved. <_WebAssemblySdkToolsDirectory Condition="'$(_WebAssemblySdkToolsDirectory)'==''">$(MSBuildThisFileDirectory)..\tools\ - <_WebAssemblySdkTasksTFM Condition=" '$(MSBuildRuntimeType)' == 'Core'">net11.0 - <_WebAssemblySdkTasksTFM Condition=" '$(MSBuildRuntimeType)' != 'Core'">net472 - <_WebAssemblySdkTasksAssembly Condition="'$(_WebAssemblySdkTasksAssembly)' == ''">$(_WebAssemblySdkToolsDirectory)\$(_WebAssemblySdkTasksTFM)\Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.dll + <_WebAssemblySdkTasksAssembly Condition="'$(_WebAssemblySdkTasksAssembly)' == ''">$(_WebAssemblySdkToolsDirectory)Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.dll $(CompressionIncludePatterns);_framework\** true - - - - + + + + true diff --git a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj index 638220540d58f9..379d3cffdc8afb 100644 --- a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj +++ b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj @@ -1,7 +1,7 @@ - $(NetCoreAppToolCurrent);$(NetFrameworkToolCurrent) + $(NetCoreAppToolCurrent) $(NoWarn),CA1050,CA1850,CA1845,CA1859,CA1866,CS8632,NU5128 Microsoft.NET.Sdk.WebAssembly true @@ -19,11 +19,8 @@ - <_PublishFramework Remove="@(_PublishFramework)" /> - <_PublishFramework Include="$(TargetFrameworks)" /> - - - + + From f8ac36d3796970719c233ba6710c2784cd859057 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 17 Jan 2026 11:29:42 +0000 Subject: [PATCH 3/6] Fix GetFilesToPackage to use TargetFramework subfolder Single-targeted projects still output to $(OutputPath)$(TargetFramework)\ directory. Update GetFilesToPackage to correctly locate DLLs/PDBs in the TFM subfolder. Co-authored-by: maraf <10020471+maraf@users.noreply.github.com> --- .../Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj index 379d3cffdc8afb..909d5b5377bf5c 100644 --- a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj +++ b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj @@ -19,8 +19,8 @@ - - + + From 813dae05b2c46cab15a87b7a3a1bec58453069f6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 17 Jan 2026 13:19:42 +0000 Subject: [PATCH 4/6] Fix in-tree build paths to include TFM subfolder Update WasmApp.InTree.props and trimmingTests.targets to include $(NetCoreAppToolCurrent) in the tasks assembly path for in-tree builds, matching the single-target output structure. Co-authored-by: maraf <10020471+maraf@users.noreply.github.com> --- eng/testing/linker/trimmingTests.targets | 2 +- src/mono/browser/build/WasmApp.InTree.props | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/testing/linker/trimmingTests.targets b/eng/testing/linker/trimmingTests.targets index 0418d28da14dbd..b9d6a174337ac1 100644 --- a/eng/testing/linker/trimmingTests.targets +++ b/eng/testing/linker/trimmingTests.targets @@ -115,7 +115,7 @@ .Replace('{WasmAppBuilderTasksAssemblyPath}', '$(WasmAppBuilderTasksAssemblyPath)') .Replace('{MicrosoftNetCoreAppRuntimePackRidDir}', '$(MicrosoftNetCoreAppRuntimePackRidDir)') .Replace('{WasmSdkPackBuildPath}', '$(MonoProjectRoot)nuget/Microsoft.NET.Sdk.WebAssembly.Pack/build/') - .Replace('{WasmSdkPackTasksPath}', '$(ArtifactsBinDir)Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/$(RuntimeConfiguration)/') + .Replace('{WasmSdkPackTasksPath}', '$(ArtifactsBinDir)Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/$(RuntimeConfiguration)/$(NetCoreAppToolCurrent)/') .Replace('{ProductVersion}', '$(ProductVersion)') .Replace('{NetCoreAppCurrent}', '$(NetCoreAppCurrent)') .Replace('{NetCoreAppToolCurrent}', '$(NetCoreAppToolCurrent)') diff --git a/src/mono/browser/build/WasmApp.InTree.props b/src/mono/browser/build/WasmApp.InTree.props index b83e9994dc24f8..721d82edcba782 100644 --- a/src/mono/browser/build/WasmApp.InTree.props +++ b/src/mono/browser/build/WasmApp.InTree.props @@ -8,7 +8,7 @@ <_WebAssemblyPropsFile Condition="'$(_WebAssemblyPropsFile)' == ''">$(MonoProjectRoot)\nuget\Microsoft.NET.Sdk.WebAssembly.Pack\build\Microsoft.NET.Sdk.WebAssembly.Browser.props <_WebAssemblyTargetsFile Condition="'$(_WebAssemblyTargetsFile)' == ''">$(MonoProjectRoot)\nuget\Microsoft.NET.Sdk.WebAssembly.Pack\build\Microsoft.NET.Sdk.WebAssembly.Browser.targets - <_WebAssemblySdkToolsDirectory Condition="'$(_WebAssemblySdkToolsDirectory)' == ''">$(ArtifactsBinDir)\Microsoft.NET.Sdk.WebAssembly.Pack.Tasks\$(RuntimeConfiguration)\ + <_WebAssemblySdkToolsDirectory Condition="'$(_WebAssemblySdkToolsDirectory)' == ''">$(ArtifactsBinDir)\Microsoft.NET.Sdk.WebAssembly.Pack.Tasks\$(RuntimeConfiguration)\$(NetCoreAppToolCurrent)\ From 70fab51461de2ff45e4f222c7a05c161f520a1bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Fi=C5=A1era?= Date: Sun, 18 Jan 2026 18:30:17 +0100 Subject: [PATCH 5/6] OutputPath already contains TFM if not multi-targeting --- .../Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj index 909d5b5377bf5c..379d3cffdc8afb 100644 --- a/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj +++ b/src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks.csproj @@ -19,8 +19,8 @@ - - + + From 0ef24cac5e01e32bfed9220ee01480274a10370f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 18 Jan 2026 21:45:42 +0000 Subject: [PATCH 6/6] Remove TaskFactory from UsingTask declarations with Runtime="NET" TaskFactory is not needed when Runtime="NET" is specified, as MSBuild automatically uses the appropriate factory. Co-authored-by: maraf <10020471+maraf@users.noreply.github.com> --- .../build/Microsoft.NET.Sdk.WebAssembly.Browser.targets | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mono/nuget/Microsoft.NET.Sdk.WebAssembly.Pack/build/Microsoft.NET.Sdk.WebAssembly.Browser.targets b/src/mono/nuget/Microsoft.NET.Sdk.WebAssembly.Pack/build/Microsoft.NET.Sdk.WebAssembly.Browser.targets index f4ac3317cad8e4..e48dd8556fe9b0 100644 --- a/src/mono/nuget/Microsoft.NET.Sdk.WebAssembly.Pack/build/Microsoft.NET.Sdk.WebAssembly.Browser.targets +++ b/src/mono/nuget/Microsoft.NET.Sdk.WebAssembly.Pack/build/Microsoft.NET.Sdk.WebAssembly.Browser.targets @@ -63,10 +63,10 @@ Copyright (c) .NET Foundation. All rights reserved. true - - - - + + + + true