用途:管理 .NET CLI 工具的安装、版本与还原,适用于团队协作和 CI 中需要可复现工具版本的场景。
主要能力:
- 全局工具(用户级,路径加入 PATH):dotnet tool install -g <package-id>,可加 --version 指定版本或预发布版本,用 dotnet tool list -g、update -g、uninstall -g 管理。默认安装位置:Linux/macOS 为 $HOME/.dotnet/tools,Windows 为 %USERPROFILE%.dotnet\tools;也可用 --tool-path 自定义目录并自行管理 PATH。
- 本地工具:在仓库根目录运行 dotnet new tool-manifest 生成 .config/dotnet-tools.json,省略 -g 安装即记录到最近的清单。清单记录精确解析版本,提交源码控制后团队成员在克隆或拉取后运行 dotnet tool restore 即可获得一致版本。
- 版本固定:支持 --version 2.0.1(精确)、"2.0.*"(补丁更新)、预发布范围;清单始终记录解析后的确切版本。
- 运行本地工具:dotnet tool run <command-name>,或命令以 dotnet- 开头时用短形式 dotnet <command-name>。
- CI 集成:在构建前运行 dotnet tool restore(快速且幂等),并提供 GitHub Actions 与 Azure DevOps 示例;建议提交清单、避免在 CI 中全局安装、缓存 NuGet 包。
- RID 特定工具:.NET 10 起作者可发布 RID 特定包,消费端 dotnet tool install 自动选择合适平台包,无需额外标志;无匹配时回退到框架依赖包。
- 故障排查:覆盖“已安装”“找不到清单”“安装后找不到命令”“CI 版本不匹配”等。全局与本地工具在作用域、位置、版本管理、CI 可复现性、团队一致性上各有取舍;项目构建、测试、开发流程建议用本地工具,个人一次性工具可用全局。
限制与边界:工具编写与打包(PackAsTool、NuGet 打包、ToolCommandName)见 dotnet-cli-packaging;分发策略见 dotnet-cli-distribution;发布 CI/CD 见 dotnet-cli-release-pipeline。资料未提供具体价格、平台支持范围等事实。