name: install-sdk description: 安装 .NET SDK,支持跨平台和可选的交互式 global.json 配置 argument-hint: “[–version <ver>] [–update-global-json] [–interactive] [–list]” allowed-tools: Bash, Read, Write, Edit, AskUserQuestion, mcp__perplexity__search
/dotnet:install-sdk
安装 .NET SDK 版本,支持跨平台包管理器和交互式 global.json 配置。
参数
从 $ARGUMENTS 解析参数:
| 标志 | 描述 | 默认值 |
|---|---|---|
--version <version> |
要安装的 SDK 版本(例如,10.0, 10.0.100) | 最新稳定版 |
--update-global-json |
同时更新/创建 global.json | false |
--interactive |
交互式模式用于 global.json 配置 | false |
--list |
列出已安装的 SDK | false |
--channel <channel> |
发布频道(LTS, STS, Preview) | STS |
工作流程
步骤 1:检测环境
确定当前状态:
# 检查已安装的 SDK
dotnet --list-sdks
# 检查当前 global.json(如果存在)
cat global.json 2>/dev/null || echo "No global.json"
检测操作系统:
- Windows:检查
winget可用性 - macOS:检查
brew可用性 - Linux:检查
apt、dnf或pacman
步骤 2:确定目标版本
如果指定了 --version:
- 解析版本(接受 “10”、“10.0” 或 “10.0.100”)
- 标准化为完整 SDK 版本
如果未指定 --version:
- 查询最新稳定版本:
使用 mcp__perplexity__search:
查询:".NET SDK 最新稳定版本 2026 年 1 月"
步骤 3:检查是否已安装
dotnet --list-sdks | grep "^<version>"
如果已安装:
.NET SDK <version> 已安装。
安装位置:<path>
当前 global.json:<version 或 none>
请选择:
- 更新 global.json 以使用此版本
- 安装不同版本
- 退出
步骤 4:安装 SDK
Windows (winget):
winget install Microsoft.DotNet.SDK.<major> --version <version>
Windows (手动/巧克力回退):
# 如果 winget 不可用
choco install dotnet-sdk --version=<version>
macOS (Homebrew):
# 安装最新版
brew install --cask dotnet-sdk
# 安装特定版本(如果可用)
brew install --cask dotnet-sdk@<major>
Linux (apt - Ubuntu/Debian):
# 如果需要,添加 Microsoft 软件包仓库
wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
# 安装 SDK
sudo apt-get update
sudo apt-get install -y dotnet-sdk-<major>.0
Linux (dnf - Fedora/RHEL):
sudo dnf install dotnet-sdk-<major>.0
步骤 5:验证安装
dotnet --list-sdks
dotnet --version
确认安装的版本出现在列表中。
步骤 6:Global.json 配置
如果使用 --update-global-json 或 --interactive:
交互式模式 (--interactive):
呈现 SDK 选择:
为此项目配置 global.json
已安装的 SDK:
1. 10.0.100(刚安装)
2. 9.0.200
3. 8.0.400
该项目应使用哪个 SDK 版本?
然后呈现 rollForward 策略:
选择 rollForward 策略:
1. latestPatch(推荐)- 使用最新补丁版本
2. latestMinor - 使用最新次要版本
3. latestMajor - 使用最新主要版本
4. latestFeature - 使用最新功能带
5. disable - 仅使用精确版本
然后呈现 allowPrerelease:
允许预发布 SDK 版本吗?
1. 否(推荐用于生产)
2. 是(用于测试预览功能)
非交互式模式:
使用合理默认值创建/更新 global.json:
{
"sdk": {
"version": "<installed-version>",
"rollForward": "latestPatch"
}
}
步骤 7:写入 Global.json
如果 global.json 存在,保留其他设置:
{
"sdk": {
"version": "10.0.100",
"rollForward": "latestPatch",
"allowPrerelease": false
},
// 保留现有的 msbuild-sdks、tools 等
}
输出格式
列表模式:
已安装的 .NET SDK:
版本 位置 状态
10.0.100 C:\Program Files\dotnet\sdk\10.0.100 活跃(global.json)
9.0.200 C:\Program Files\dotnet\sdk\9.0.200 已安装
8.0.400 C:\Program Files\dotnet\sdk\8.0.400 已安装
当前 global.json:
版本:10.0.100
RollForward:latestPatch
路径:D:\repos\myproject\global.json
安装成功:
.NET SDK 安装完成
已安装:.NET SDK 10.0.100
位置:C:\Program Files\dotnet\sdk\10.0.100
方法:winget
验证:
dotnet --version:10.0.100
Global.json:已更新为使用 10.0.100,rollForward 为 latestPatch
安装并交互式配置 Global.json:
.NET SDK 安装完成
已安装:.NET SDK 10.0.100
Global.json 配置:
{
"sdk": {
"version": "10.0.100",
"rollForward": "latestMinor",
"allowPrerelease": false
}
}
写入到:D:\repos\myproject\global.json
RollForward 策略参考
| 策略 | 行为 |
|---|---|
patch |
仅精确补丁版本 |
feature |
最新补丁,相同功能带 |
minor |
最新补丁,相同次要版本 |
major |
最新补丁,相同主要版本 |
latestPatch |
指定功能带的最新补丁 |
latestFeature |
指定次要的最新功能带 |
latestMinor |
指定主要的最新次要版本 |
latestMajor |
最新可用 SDK |
disable |
仅精确版本,不向前滚动 |
示例
# 列出已安装的 SDK
/dotnet:install-sdk --list
# 安装最新稳定 SDK
/dotnet:install-sdk
# 安装特定版本
/dotnet:install-sdk --version 10.0.100
# 安装并更新 global.json
/dotnet:install-sdk --version 10.0 --update-global-json
# 交互式 global.json 配置
/dotnet:install-sdk --interactive
# 安装预览版 SDK
/dotnet:install-sdk --channel Preview
故障排除
winget 未找到(Windows):
winget 不可用。选项:
1. 从 Microsoft Store 安装 App Installer
2. 使用 chocolatey:choco install dotnet-sdk
3. 手动从 https://dotnet.microsoft.com/download 下载
权限被拒绝(Linux):
安装需要 sudo。运行:
sudo apt-get install dotnet-sdk-10.0
或使用安装脚本(用户本地):
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version 10.0.100