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