Blazor WebAssembly AOT 编译怎么开启

来源:这里教程网 时间:2026-02-21 17:39:45 作者:

Blazor WebAssembly AOT 编译不是默认开启的,需要显式配置。它适用于 .NET 7 及以上版本(推荐 .NET 8 或 .NET 9/10),且仅支持独立部署模式(即纯客户端 wasm 应用,不依赖 ASP.NET Core 服务器托管)。


✅ 正确开启 AOT 编译的两种常用方式

方式一:通过发布配置文件(推荐,更可控)
在 Visual Studio 中:

右键项目 → “发布” → “新建发布配置文件” → 选择“文件夹”或目标(如 Azure Static Web Apps) 点击“编辑” → 展开“设置” → 找到 “提前 (AOT) 编译” 选项 → 勾选 ✔ 保存并发布

或者直接在

.pubxml
文件中添加:

<PropertyGroup>
  <RunAOTCompilation>true</RunAOTCompilation>
</PropertyGroup>

方式二:命令行发布时指定参数
在项目根目录执行:

dotnet publish -c Release -p:RunAOTCompilation=true

若使用 .NET 9+,还可加

-p:PublishTrimmed=true
配合裁剪(AOT 通常建议启用裁剪)。


⚠ 注意事项

AOT 编译会显著增加
wwwroot/_framework
下的 wasm 文件体积(可能翻倍),首次加载变慢,但后续运行更快(尤其 CPU 密集型逻辑)。
不支持
dynamic
、反射-heavy 的代码(如未标注
[AssemblyMetadata]
或未保留类型),需配合
TrimmerRootAssembly
DynamicDependency
特性处理。
调试体验受限:AOT 编译后无法在浏览器 DevTools 中单步调试 C# 源码(仅支持源映射有限调试,且需额外配置
DebugType=embedded
)。
必须使用 .NET WebAssembly SDK(安装时自动包含),可通过
dotnet workload list
查看是否含
wasm-tools

? 验证是否生效

发布完成后,检查输出目录(如

bin\Release\net10.0\publish\wwwroot\_framework
):

若看到
dotnet.wasm
+ 大量
*.dll.bc
*.dll.o
文件,说明 AOT 已启用;
若只有
dotnet.wasm
*_wasm.js
,则仍是解释执行(未开启 AOT)。

基本上就这些。

相关推荐