不能直接用,因.net 8+启用托管工作负载机制,需指定sdk版本并按新命名安装,如maui需分装各平台子项,wasm-tools替代旧webassembly-tools。

dotnet workload install 命令是否还能直接用?
不能直接用 dotnet workload install maui 或 dotnet workload install wasm-tools 了——从 .NET 6 开始,workload 安装必须指定 SDK 版本兼容性,且 .NET 8+ 默认启用“托管工作负载”机制,命令行为有变化。
常见错误现象:Workload installation failed: Unable to find workload pack 'Microsoft.NET.Workload.MAUI' 或安装后 dotnet build 仍报 NETSDK1147: The target platform must be specified。
- 必须先确认已安装对应版本的 .NET SDK(如 MAUI 需 .NET 7+,WASM 工具链在 .NET 6+ 支持,但推荐 .NET 8)
- 运行
dotnet --list-sdks确保目标 SDK 存在(例如8.0.200 [C:\Program Files\dotnet\sdk]) - workload 不再全局安装,而是绑定到具体 SDK 版本;切换 SDK 后需重新安装对应 workload
MAUI workload 的正确安装步骤(.NET 8)
MAUI 在 .NET 8 中拆分为多个 workload 包,只装 maui 不够,缺一不可。官方推荐使用 --skip-manifest-update 避免权限冲突,尤其在企业受限环境。
实操命令(管理员或非管理员均可,但需网络通畅):
dotnet workload install maui --skip-manifest-update dotnet workload install maui-android --skip-manifest-update dotnet workload install maui-ios --skip-manifest-update dotnet workload install maui-maccatalyst --skip-manifest-update dotnet workload install maui-windows --skip-manifest-update
- 若只需 Web 部署能力,可跳过
maui-ios和maui-maccatalyst(Windows 开发者) - 安装后验证:
dotnet workload list应显示maui及其子项,状态为Installed - 不推荐用
--include-previews,除非你明确需要预览版 MAUI 控件,否则易引发Microsoft.Maui.Controls版本冲突
wasm-tools workload 安装与 Blazor WebAssembly 关联
wasm-tools 是 Blazor WebAssembly 构建和调试必需的工作负载,不是可选插件。它提供 AOT 编译、链接器支持和浏览器调试协议集成。不装它,dotnet publish -c Release -p:PublishTrimmed=true 会失败。
安装命令(.NET 8 推荐):
dotnet workload install wasm-tools --skip-manifest-update
- 注意:.NET 6/7 中该 workload 名为
webassembly-tools,.NET 8 起统一为wasm-tools,旧名已废弃 - 若项目含
<project sdk="Microsoft.NET.Sdk.BlazorWebAssembly"></project>,但构建时报error NETSDK1179: The 'wasm-tools' workload is required,说明未安装或 SDK 版本不匹配 - WASM 工具链默认启用 IL trimming,如引用反射-heavy 库(如
Newtonsoft.Json),需在.csproj中加<trimmerrootassembly include="Newtonsoft.Json"></trimmerrootassembly>
卸载、修复和多 SDK 共存时的注意事项
workload 不支持跨 SDK 版本共享。比如你同时装了 .NET 7.0.400 和 .NET 8.0.200,两个 SDK 下的 maui 必须分别安装,互不影响也不自动同步。
- 卸载用
dotnet workload uninstall <id></id>,例如dotnet workload uninstall maui-android;不能用remove或delete - 遇到 manifest 损坏(表现为
Failed to update manifest),可手动删掉%USERPROFILE%\.dotnet\workloads\manifests下对应 JSON 文件,再重试 install - CI/CD 中建议显式指定 SDK 版本(
global.json)并执行dotnet workload install,避免因缓存导致 workload 缺失
最容易被忽略的是:每次升级 .NET SDK 主版本(如 7 → 8),所有 workload 都得重装——没有迁移逻辑,manifest 也不兼容。别指望旧 workload 在新 SDK 下自动激活。










