Blazor WebAssembly AOT 编译不是默认开启的,需要显式配置。它适用于 .NET 7 及以上版本(推荐 .NET 8 或 .NET 9/10),且仅支持独立部署模式(即纯客户端 wasm 应用,不依赖 ASP.NET Core 服务器托管)。
✅ 正确开启 AOT 编译的两种常用方式
方式一:通过发布配置文件(推荐,更可控)
在 Visual Studio 中:
或者直接在
.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)。
基本上就这些。
