From be8a1e81479ba0ad1e6815f207153034d7d14ca0 Mon Sep 17 00:00:00 2001 From: Aleksey Kliger Date: Tue, 22 Jun 2021 13:38:18 -0400 Subject: [PATCH 1/9] [wasm] Build static components; include hot_reload in runtime Workaround until https://github.com/dotnet/runtime/issues/54565 is fixed Build the runtime always with support for hot_reload, and without diagnostics_tracing --- src/mono/mono.proj | 1 - src/mono/wasm/Makefile | 8 ++++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/mono/mono.proj b/src/mono/mono.proj index e5d4bb2970aa33..e459f872177169 100644 --- a/src/mono/mono.proj +++ b/src/mono/mono.proj @@ -294,7 +294,6 @@ <_MonoCMakeArgs Include="-DENABLE_INTERP_LIB=1"/> <_MonoCMakeArgs Include="-DDISABLE_ICALL_TABLES=1"/> <_MonoCMakeArgs Include="-DDISABLE_CRASH_REPORTING=1"/> - <_MonoCMakeArgs Include="-DDISABLE_COMPONENTS=1"/> <_MonoCMakeArgs Include="-DENABLE_ICALL_EXPORT=1"/> <_MonoCMakeArgs Include="-DENABLE_LAZY_GC_THREAD_CREATION=1"/> <_MonoCMakeArgs Include="-DENABLE_LLVM_RUNTIME=1"/> diff --git a/src/mono/wasm/Makefile b/src/mono/wasm/Makefile index 9f6d055511193c..86288cd674e703 100644 --- a/src/mono/wasm/Makefile +++ b/src/mono/wasm/Makefile @@ -48,12 +48,20 @@ provision-wasm: .stamp-wasm-install-and-select-$(EMSCRIPTEN_VERSION) @echo "----------------------------------------------------------" @echo "Installed emsdk into EMSDK_PATH=$(TOP)/src/mono/wasm/emsdk" +# FIXME: When https://github.com/dotnet/runtime/issues/54565 is fixed, and the WasmApp targets are updated to use mono runtime components, remove this +MONO_COMPONENT_LIBS= \ + $(MONO_BIN_DIR)/libmono-component-hot_reload-static.a \ + $(MONO_BIN_DIR)/libmono-component-diagnostics_tracing-stub-static.a + MONO_OBJ_DIR=$(OBJDIR)/mono/Browser.wasm.$(CONFIG) MONO_INCLUDE_DIR=$(MONO_BIN_DIR)/include/mono-2.0 BUILDS_OBJ_DIR=$(MONO_OBJ_DIR)/wasm +# libmonosgen-2.0 is in MONO_LIBS twice because the components and the runtime are depend on each other MONO_LIBS = \ $(MONO_BIN_DIR)/libmono-ee-interp.a \ $(MONO_BIN_DIR)/libmonosgen-2.0.a \ + $(MONO_COMPONENT_LIBS) \ + $(MONO_BIN_DIR)/libmonosgen-2.0.a \ $(MONO_BIN_DIR)/libmono-ilgen.a \ $(MONO_BIN_DIR)/libmono-icall-table.a \ $(MONO_BIN_DIR)/libmono-profiler-aot.a \ From aa89d4ccd2888ec8913fe403114e929534dfb6cc Mon Sep 17 00:00:00 2001 From: Thays Grazia Date: Tue, 22 Jun 2021 16:10:03 -0300 Subject: [PATCH 2/9] Update wasm.proj --- src/mono/wasm/wasm.proj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mono/wasm/wasm.proj b/src/mono/wasm/wasm.proj index 489d88259f5f3e..d24391f3625ffb 100644 --- a/src/mono/wasm/wasm.proj +++ b/src/mono/wasm/wasm.proj @@ -189,6 +189,8 @@ + + From 5da0bde77e6b00b90ccd3b6a69ccb3dbe33e9bca Mon Sep 17 00:00:00 2001 From: Aleksey Kliger Date: Tue, 22 Jun 2021 15:21:33 -0400 Subject: [PATCH 3/9] Add a browser functional test for hot reload Just check that the capabilities are non-empty which is a good proxy for hot reload being enabled in the runtime. --- .../ApplyUpdateReferencedAssembly.csproj | 27 ++++++ .../MethodBody1.cs | 11 +++ .../MethodBody1_v1.cs | 11 +++ .../MethodBody1_v2.cs | 11 +++ .../deltascript.json | 7 ++ .../WebAssembly/Browser/HotReload/Program.cs | 82 +++++++++++++++++++ .../WebAssembly.Browser.HotReload.Test.csproj | 51 ++++++++++++ .../WebAssembly/Browser/HotReload/index.html | 55 +++++++++++++ .../WebAssembly/Browser/HotReload/runtime.js | 47 +++++++++++ 9 files changed, 302 insertions(+) create mode 100644 src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj create mode 100644 src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/MethodBody1.cs create mode 100644 src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/MethodBody1_v1.cs create mode 100644 src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/MethodBody1_v2.cs create mode 100644 src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/deltascript.json create mode 100644 src/tests/FunctionalTests/WebAssembly/Browser/HotReload/Program.cs create mode 100644 src/tests/FunctionalTests/WebAssembly/Browser/HotReload/WebAssembly.Browser.HotReload.Test.csproj create mode 100644 src/tests/FunctionalTests/WebAssembly/Browser/HotReload/index.html create mode 100644 src/tests/FunctionalTests/WebAssembly/Browser/HotReload/runtime.js diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj new file mode 100644 index 00000000000000..fcdc473a23d9b3 --- /dev/null +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj @@ -0,0 +1,27 @@ + + + true + deltascript.json + library + false + true + + false + true + + + + + + + + + + + diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/MethodBody1.cs b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/MethodBody1.cs new file mode 100644 index 00000000000000..9e98604b921d21 --- /dev/null +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/MethodBody1.cs @@ -0,0 +1,11 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace ApplyUpdateReferencedAssembly +{ + public class MethodBody1 { + public static string StaticMethod1 () { + return "OLD STRING"; + } + } +} diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/MethodBody1_v1.cs b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/MethodBody1_v1.cs new file mode 100644 index 00000000000000..4aab1e81dade09 --- /dev/null +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/MethodBody1_v1.cs @@ -0,0 +1,11 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace ApplyUpdateReferencedAssembly +{ + public class MethodBody1 { + public static string StaticMethod1 () { + return "NEW STRING"; + } + } +} diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/MethodBody1_v2.cs b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/MethodBody1_v2.cs new file mode 100644 index 00000000000000..83f0142e55f892 --- /dev/null +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/MethodBody1_v2.cs @@ -0,0 +1,11 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace ApplyUpdateReferencedAssembly +{ + public class MethodBody1 { + public static string StaticMethod1 () { + return "NEWEST STRING"; + } + } +} diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/deltascript.json b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/deltascript.json new file mode 100644 index 00000000000000..8e738364bc7475 --- /dev/null +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/deltascript.json @@ -0,0 +1,7 @@ +{ + "changes": [ + {"document": "MethodBody1.cs", "update": "MethodBody1_v1.cs"}, + {"document": "MethodBody1.cs", "update": "MethodBody1_v2.cs"}, + ] +} + diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/Program.cs b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/Program.cs new file mode 100644 index 00000000000000..0b5f12d7facc75 --- /dev/null +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/Program.cs @@ -0,0 +1,82 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; + +namespace Sample +{ + public class Test + { + public static void Main(string[] args) + { + Console.WriteLine ("Hello, World!"); + } + + [MethodImpl(MethodImplOptions.NoInlining)] + public static int TestMeaning() + { + const int success = 42; + const int failure = 1; + + var ty = typeof(System.Reflection.Metadata.AssemblyExtensions); + var mi = ty.GetMethod("GetApplyUpdateCapabilities", BindingFlags.NonPublic | BindingFlags.Static, Array.Empty()); + + if (mi == null) + return failure; + + var caps = mi.Invoke(null, null) as string; + + if (String.IsNullOrEmpty(caps)) + return failure; + + var assm = typeof (ApplyUpdateReferencedAssembly.MethodBody1).Assembly; + + var r = ApplyUpdateReferencedAssembly.MethodBody1.StaticMethod1(); + if ("OLD STRING" != r) + return failure; + + ApplyUpdate(assm); + + r = ApplyUpdateReferencedAssembly.MethodBody1.StaticMethod1(); + if ("NEW STRING" != r) + return failure; + + ApplyUpdate(assm); + + r = ApplyUpdateReferencedAssembly.MethodBody1.StaticMethod1(); + if ("NEWEST STRING" != r) + return failure; + + return success; + } + + + private static System.Collections.Generic.Dictionary assembly_count = new(); + + internal static void ApplyUpdate (System.Reflection.Assembly assm) + { + int count; + if (!assembly_count.TryGetValue(assm, out count)) + count = 1; + else + count++; + assembly_count [assm] = count; + + /* FIXME WASM: Location is empty on wasm. Make up a name based on Name */ + string basename = assm.Location; + if (basename == "") + basename = assm.GetName().Name + ".dll"; + Console.Error.WriteLine($"Apply Delta Update for {basename}, revision {count}"); + + string dmeta_name = $"{basename}.{count}.dmeta"; + string dil_name = $"{basename}.{count}.dil"; + byte[] dmeta_data = System.IO.File.ReadAllBytes(dmeta_name); + byte[] dil_data = System.IO.File.ReadAllBytes(dil_name); + byte[] dpdb_data = null; // TODO also use the dpdb data + + System.Reflection.Metadata.AssemblyExtensions.ApplyUpdate(assm, dmeta_data, dil_data, dpdb_data); + } + } +} diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/WebAssembly.Browser.HotReload.Test.csproj b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/WebAssembly.Browser.HotReload.Test.csproj new file mode 100644 index 00000000000000..b57c362695d79c --- /dev/null +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/WebAssembly.Browser.HotReload.Test.csproj @@ -0,0 +1,51 @@ + + + true + false + true + WasmTestOnBrowser + 42 + runtime.js + false + + + + + + + Always + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/index.html b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/index.html new file mode 100644 index 00000000000000..ad7cc2164ba485 --- /dev/null +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/index.html @@ -0,0 +1,55 @@ + + + + + + TESTS + + + + + + Result from Sample.Test.TestMeaning: + + + + + + + diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/runtime.js b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/runtime.js new file mode 100644 index 00000000000000..4859991a626f4a --- /dev/null +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/runtime.js @@ -0,0 +1,47 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +var Module = { + + config: null, + + preInit: async function() { + Module.config = await MONO.mono_wasm_load_config("./mono-config.json"); + }, + + onRuntimeInitialized: function () { + if (!Module.config || Module.config.error) { + console.log("No config found"); + test_exit(1); + throw(Module.config.error); + } + + Module.config.loaded_cb = function () { + try { + App.init (); + } catch (error) { + test_exit(1); + throw (error); + } + }; + Module.config.fetch_file_cb = function (asset) { + return fetch (asset, { credentials: 'same-origin' }); + } + + if (Module.config.environment_variables !== undefined) { + console.log ("expected environment variables to be undefined, but they're: ", Module.config.environment_variables); + test_exit(1); + } + Module.config.environment_variables = { + "DOTNET_MODIFIABLE_ASSEMBLIES": "debug" + }; + + try + { + MONO.mono_load_runtime_and_bcl_args (Module.config); + } catch (error) { + test_exit(1); + throw(error); + } + }, +}; From e6da958ebfdc99c22d7fc4521a467899a7dda269 Mon Sep 17 00:00:00 2001 From: Aleksey Kliger Date: Tue, 22 Jun 2021 19:10:17 -0400 Subject: [PATCH 4/9] Turn off trimming for hot reload functional test --- .../ApplyUpdateReferencedAssembly.csproj | 1 + .../Browser/HotReload/WebAssembly.Browser.HotReload.Test.csproj | 1 + 2 files changed, 2 insertions(+) diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj index fcdc473a23d9b3..5b5b71292c3a7b 100644 --- a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj @@ -8,6 +8,7 @@ false true + false diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/WebAssembly.Browser.HotReload.Test.csproj b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/WebAssembly.Browser.HotReload.Test.csproj index b57c362695d79c..e113eabea16f78 100644 --- a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/WebAssembly.Browser.HotReload.Test.csproj +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/WebAssembly.Browser.HotReload.Test.csproj @@ -2,6 +2,7 @@ true false + false true WasmTestOnBrowser 42 From be28aeef14e85c4aa44fc2c803136acb5b8ef940 Mon Sep 17 00:00:00 2001 From: Aleksey Kliger Date: Tue, 22 Jun 2021 23:20:30 -0400 Subject: [PATCH 5/9] Why is this necessary? This assembly shouldn't be trimmed --- ...ystem.Reflection.Metadata.ApplyUpdate.Test.MethodBody1.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.MethodBody1/System.Reflection.Metadata.ApplyUpdate.Test.MethodBody1.csproj b/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.MethodBody1/System.Reflection.Metadata.ApplyUpdate.Test.MethodBody1.csproj index f05397e884c83a..57ba4f3ec52983 100644 --- a/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.MethodBody1/System.Reflection.Metadata.ApplyUpdate.Test.MethodBody1.csproj +++ b/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.MethodBody1/System.Reflection.Metadata.ApplyUpdate.Test.MethodBody1.csproj @@ -4,6 +4,7 @@ $(NetCoreAppCurrent) true deltascript.json + true From cc45c803124dd3a67448827485ae4f1f9213522f Mon Sep 17 00:00:00 2001 From: Aleksey Kliger Date: Wed, 23 Jun 2021 09:10:11 -0400 Subject: [PATCH 6/9] No really, don't trim the modifiable assemblies --- .../ApplyUpdateReferencedAssembly.csproj | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj index 5b5b71292c3a7b..f36a5b1f25d8eb 100644 --- a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj @@ -1,4 +1,4 @@ - + true deltascript.json @@ -8,6 +8,8 @@ false true + + false false From 5a084cf3d201cb5b28186ff54e819888b07e498c Mon Sep 17 00:00:00 2001 From: Aleksey Kliger Date: Wed, 23 Jun 2021 13:10:37 -0400 Subject: [PATCH 7/9] Disable test on browser AOT --- src/libraries/System.Runtime.Loader/tests/ApplyUpdateTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libraries/System.Runtime.Loader/tests/ApplyUpdateTest.cs b/src/libraries/System.Runtime.Loader/tests/ApplyUpdateTest.cs index e533377e673ac2..2a953d19eece86 100644 --- a/src/libraries/System.Runtime.Loader/tests/ApplyUpdateTest.cs +++ b/src/libraries/System.Runtime.Loader/tests/ApplyUpdateTest.cs @@ -18,6 +18,7 @@ namespace System.Reflection.Metadata public class ApplyUpdateTest { [Fact] + [ActiveIssue("https://github.com/dotnet/runtime/issues/54617", typeof(PlatformDetection), nameof(PlatformDetection.IsBrowser), nameof(PlatformDetection.IsMonoAOT))] void StaticMethodBodyUpdate() { ApplyUpdateUtil.TestCase(static () => From 1badd5c22c70c23a66955b93d3d11ba3e14d9afb Mon Sep 17 00:00:00 2001 From: Aleksey Kliger Date: Wed, 23 Jun 2021 13:14:36 -0400 Subject: [PATCH 8/9] fix whitespace --- src/mono/wasm/wasm.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/wasm/wasm.proj b/src/mono/wasm/wasm.proj index d24391f3625ffb..ffc2fb92825ba5 100644 --- a/src/mono/wasm/wasm.proj +++ b/src/mono/wasm/wasm.proj @@ -198,7 +198,7 @@ $(NativeBinDir)libSystem.Native.a; $(NativeBinDir)libSystem.IO.Compression.Native.a" /> - + From 335842dc87e96b26c5fdfe17c20df0e1c69be7c3 Mon Sep 17 00:00:00 2001 From: Aleksey Kliger Date: Wed, 23 Jun 2021 13:40:33 -0400 Subject: [PATCH 9/9] tabs->spaces --- .../ApplyUpdateReferencedAssembly.csproj | 8 ++++---- .../WebAssembly/Browser/HotReload/Program.cs | 1 - .../WebAssembly.Browser.HotReload.Test.csproj | 14 +++++++------- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj index f36a5b1f25d8eb..46e260f24e155f 100644 --- a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/ApplyUpdateReferencedAssembly/ApplyUpdateReferencedAssembly.csproj @@ -19,11 +19,11 @@ diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/Program.cs b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/Program.cs index 0b5f12d7facc75..cb005b090887d5 100644 --- a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/Program.cs +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/Program.cs @@ -52,7 +52,6 @@ public static int TestMeaning() return success; } - private static System.Collections.Generic.Dictionary assembly_count = new(); internal static void ApplyUpdate (System.Reflection.Assembly assm) diff --git a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/WebAssembly.Browser.HotReload.Test.csproj b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/WebAssembly.Browser.HotReload.Test.csproj index e113eabea16f78..2ba05527c2a42d 100644 --- a/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/WebAssembly.Browser.HotReload.Test.csproj +++ b/src/tests/FunctionalTests/WebAssembly/Browser/HotReload/WebAssembly.Browser.HotReload.Test.csproj @@ -24,8 +24,8 @@ + Condition="'$(TargetOS)' == 'Browser' and '$(EnableAggressiveTrimming)' == 'true'" + BeforeTargets="ConfigureTrimming"> + BeforeTargets="PrepareForWasmBuildApp" + Condition="'$(TargetOS)' == 'Browser'"> + Condition="$([System.String]::new('%(PublishItemsOutputGroupOutputs.Identity)').EndsWith('.dmeta'))" /> + Condition="$([System.String]::new('%(PublishItemsOutputGroupOutputs.Identity)').EndsWith('.dil'))" /> + Condition="$([System.String]::new('%(PublishItemsOutputGroupOutputs.Identity)').EndsWith('.dpdb'))" />