如何减少aspnet/blazor编译的dll/wasm的大小?

itm*_*nus 6 mono webassembly blazor

我注意到*.wasmcompiler by的文件大小Rust是可以接受的。然而,一个最小的 HelloWorld 编译器AspNet/Blazor将占用近 2.8MB。

mono.wasm       1.75MB
mscorlib.dll    1.64MB
*.dll           ....
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,那mono.wasm就是在浏览器中运行并运行我们编写的 dll 的 VM。这是否意味着无论我们做什么,我们都不能使文件的大小小于 1.75MB?如果没有,有没有办法减小文件大小?

Col*_*inE 6

是的,对于“Hello World”应用程序来说,2.8 MB 是相当大的有效负载。但是,Blazor 仍然是一项非常实验性的技术,尚未准备好用于生产。目前生成的输出如此之大的原因有很多:

您当前的应用程序在解释模式下运行,其中mono.wasm文件将 CLR 传送到您的浏览器,允许它执行您的 DLL。更快,更高效的大小的方法是提前时间编译(AOT)的使用这篇文章中描述。这将允许编译器去除任何未使用的库函数,从而提供高度优化的输出。

WebAssembly 运行时本身的功能非常有限,未来版本将添加垃圾收集和 Blazor 可以直接使用的各种其他功能。目前mono.wasm包括它自己的垃圾收集器。

Blazor 项目本身有许多未解决的问题,描述了正在积极进行的各种优化。它已经执行了 tree-shaking 和各种其他优化,但这种类型的工作需要时间。