VS2022中Blazor Wasm AOT发布构建如何启用4核并行编译?
解决.NET7 WASM发布时多核编译的问题
首先,你之前用的--aot、--readytorun、--maxparallelism都不是dotnet publish的合法命令行开关,这些都是MSBuild属性,需要通过-p:PropertyName=Value的方式传递,或者在项目文件中配置。针对WASM AOT编译的多核利用,需要从MSBuild并行和Emscripten并行两个维度配置:
正确的命令行方式
直接在发布命令中指定并行相关的MSBuild属性:
dotnet publish --configuration Release --runtime wasm -p:RunAOTCompilation=true -p:MSBuildMaxCpuCount=4 -p:EmscriptenParallelLinking=4 -o ./bin/release/net7.0/browser-wasm/publish
RunAOTCompilation=true:替代你之前的--aot,和项目文件中的配置作用一致MSBuildMaxCpuCount=4:控制MSBuild自身的编译并行度,对应核心数EmscriptenParallelLinking=4:WASM AOT的链接阶段由Emscripten处理,这个属性控制该阶段的并行线程数,是提升编译速度的关键
项目文件配置方式
如果想把配置固化到项目文件中,修改PropertyGroup:
<PropertyGroup> <TargetFramework>net7.0</TargetFramework> <RunAOTCompilation>true</RunAOTCompilation> <!-- 控制MSBuild并行核心数 --> <MSBuildMaxCpuCount>4</MSBuildMaxCpuCount> <!-- 控制Emscripten链接阶段并行数 --> <EmscriptenParallelLinking>4</EmscriptenParallelLinking> </PropertyGroup>
额外说明
RunReadyToRun属性对WASM项目意义不大,因为WASM的AOT编译已经是预编译优化,不需要额外开启R2R- 你之前尝试的
MaxParallelism不是MSBuild控制并行的正确属性,正确的是MSBuildMaxCpuCount - Emscripten的并行配置是关键,因为WASM AOT编译的大部分耗时都在Emscripten的链接步骤,设置这个参数才能真正利用多核CPU
内容的提问来源于stack exchange,提问作者Flippowitsch
相关产品推荐
相关产品推荐

