.NET6 Blazor WASM发布失败 报错MSB6006 dotnet.exe退出码1
.NET 6 Blazor WASM 发布报MSB6006退出码1排查方案
从报错路径看,你当前构建默认调用的是6.0.400-preview.22301.10预览版SDK,这个版本的Blazor WASM构建目标文件存在已知兼容性问题,结合你同事可正常发布同份代码、非WASM项目发布正常、空白项目可正常发布的现象,按以下步骤排查即可:
- 第一步:强制项目使用正式版SDK构建
预览版SDK优先级高于正式版,如果你装了预览版但没做版本限制,VS会默认调用预览版构建。在项目根目录新建global.json文件,写入以下配置,禁止构建时调用预览版SDK:
保存后关闭Visual Studio,删除项目下的{ "sdk": { "allowPrerelease": false, "rollForward": "latestFeature" } }bin、obj文件夹,重新打开VS后先还原NuGet包,再尝试发布,绝大多数情况这步就能解决问题。 - 第二步:清理本地缓存+卸载问题预览版SDK
如果第一步操作后仍报错,直接去系统「程序和功能」里卸载6.0.400-preview.22301.10这个预览版SDK——预览版本来就不适合生产发布场景,没必要留着。
卸载完成后执行以下操作清缓存:- 关闭所有VS实例,打开命令提示符执行
dotnet nuget locals all --clear清空全局NuGet缓存 - 删除路径
C:\Users\你的用户名\AppData\Local\Microsoft\VisualStudio\你安装的VS版本号\ComponentModelCache下的所有文件 - 重新打开VS还原包后再试发布
- 关闭所有VS实例,打开命令提示符执行
- 第三步:获取详细错误日志定位根因
VS图形化发布默认只显示最外层的通用报错,看不到MSB6006错误下隐藏的具体原因。直接在项目根目录打开命令行,执行带详细日志的发布命令:dotnet publish -c Release -o ./local_publish -v diag
这个命令会输出完整构建流程的所有日志,你可以直接翻到报错位置看具体触发原因,常见的触发点包括:项目静态资源文件名带特殊字符、WASM Ahead-of-Time编译时内存不足、第三方NuGet包裁剪异常、路径长度超过系统限制等,对应处理即可。
*注意:空白Blazor项目能正常发布不代表SDK没问题,只是空白项目没有复杂的静态资源、第三方依赖,刚好踩不到这个预览版SDK的构建bug,不要误判成业务项目代码损坏。
内容的提问来源于stack exchange,提问作者Neralem
相关产品推荐
相关产品推荐

