为啥在启用 AOT 编译的情况下没有为 blazor webbasesembly 生成 .wasm 文件?

Posted

技术标签:

【中文标题】为啥在启用 AOT 编译的情况下没有为 blazor webbasesembly 生成 .wasm 文件?【英文标题】:why there is no .wasm file generated for blazor webasesembly with AOT compilling enabled?为什么在启用 AOT 编译的情况下没有为 blazor webbasesembly 生成 .wasm 文件? 【发布时间】:2021-09-29 07:28:34 【问题描述】:

我刚刚尝试了新的 blazor webassembly 框架,有一点我无法理解:

我已发布启用 AOT 的项目。但是,在已发布的文件中,除了“dotnet.wasm”文件之外,我看不到任何 .wasm 文件。

从我了解到的 https://visualstudiomagazine.com/articles/2021/05/26/net6-aspnet.aspx 中,所有 c# 代码以及 BCL dll 都被 AOTed 到 .wasm。请指出我错过了什么?或者您能否告诉我 blazor webassembly AOT 在这种情况下是如何工作的?

非常感谢。

【问题讨论】:

【参考方案1】:

现在所有 C#(技术上的 IL)代码都编译为 dotnet.wasm 文件。您会注意到,与非 AOT 版本相比,此文件的大小要大得多。例如,当您在不使用 AOT 的情况下发布时,dotnet.wasm 的大小为 2MB,而使用 AOT 时,它可以达到 50 甚至更多 MB。

【讨论】:

以上是关于为啥在启用 AOT 编译的情况下没有为 blazor webbasesembly 生成 .wasm 文件?的主要内容,如果未能解决你的问题,请参考以下文章

默认情况下为啥没有设置线程化 perl(带有 usethreads)?

为啥即使模板访问私有属性,Angular AOT 也会编译?

为啥 Angular AoT 不支持装饰器中的函数表达式?

.Net 7的AOT原理简析

装饰器不支持函数调用,而 ng build --prod (AOT)

(Xamarin iOS):ExecutionEngineException - 在仅 aot 模式下运行时尝试 JIT 编译方法