内容提要
微软发布公共预览版 dotnetup,定位为“.NET 版 rustup”,用于统一管理 .NET 工具链。它无需管理员权限,全部安装在用户目录;支持多版本共存,按意图跟踪更新,兼容 global.json。macOS 和 Linux 可用一行命令安装,支持安装预览版、每日构建及运行时,并可自更新。未来计划集成 CI/CD,目标成为安装 .NET 的官方推荐方式。
延伸解读
为什么 .NET 需要自己的 rustup
文章指出,.NET 安装长期存在平台割裂:Windows 用安装器,macOS 有 brew 和 pkg 之争,Linux 上 apt、tarball、dotnet-install.sh 并存,装完文件散落系统目录,卸载困难。新人光是装对 SDK 就可能耗掉半天。dotnetup 试图用统一 CLI 消除这种概念负担,让所有平台用同一套命令管理工具链。
按意图跟踪:更新策略的实用变化
dotnetup 允许用户声明“我要 .NET 10 最新版”或“跟随最新稳定版”,之后每月 servicing 更新会自动匹配。精确版本如 10.0.3 则被钉住,不会被更新冲掉。更新后还会自动清理无通道引用的旧组件。这减少了手动追踪版本和清理磁盘的负担,同时保留 global.json 对团队项目的版本约束。
预览版与每日构建:从折腾到一等公民
以前验证 nightly build 修复,需要去 GitHub 翻 tarball、手动解压、改环境变量。现在 dotnetup 把预览版和每日构建作为一等公民,一条命令即可安装,并与稳定版共存,测完可随手卸载。这对需要快速验证 bug 修复或尝鲜新功能的开发者,显著降低了尝试成本。
当前限制与适用场景
dotnetup 目前是公共预览,macOS 和 Linux 体验最完整,Windows 系统级安装管理仍在路线图上。它不需要 root,非交互运行顺畅,适合容器化 CI worker,官方计划未来集成 GitHub Actions 和 Azure DevOps。但现阶段若依赖 Windows 系统级安装或成熟稳定工具,仍需观望。
Q&A
dotnetup 是什么?它和 rustup 有什么关系?
dotnetup 是微软发布的 .NET 工具链管理器,目前处于公共预览阶段,定位为“.NET 版的 rustup”,用于统一管理 .NET 工具链。
dotnetup 有哪些主要功能特点?
dotnetup 的主要功能包括:无需管理员权限,所有组件安装在用户目录;支持多版本共存;按意图跟踪更新(如跟踪最新稳定版或特定版本);兼容 global.json;支持安装预览版、每日构建及运行时;支持自更新。
如何在 macOS 或 Linux 上安装 dotnetup?
在 macOS(zsh)上运行:curl -fsSL https://aka.ms/dotnetup/get-dotnetup.sh | zsh;在 Linux(bash)上运行:curl -fsSL https://aka.ms/dotnetup/get-dotnetup.sh | bash。安装后执行 dotnetup init 进行初始化。
dotnetup 如何管理 .NET 的更新?
dotnetup 支持按“意图”跟踪更新,例如可以指定跟踪 .NET 10 的最新版或最新稳定版,之后每月的 servicing 更新会自动跟上;精确版本(如 10.0.3)则会被钉住。更新命令为 dotnetup update,更新后会自动清理无用的旧组件。
dotnetup 和 dotnet-install.sh 有什么区别?
dotnet-install.sh 只能完成安装,而 dotnetup 还提供管理功能:包括清单、签名和 checksum 校验、批量安装多个版本更高效,以及跨平台统一的 CLI。
dotnetup 适合在 CI/CD 中使用吗?
适合。dotnetup 不需要 root 权限,非交互运行顺畅,天然适配容器化的 CI worker。官方还计划未来直接集成进 GitHub Actions 和 Azure DevOps,替换掉这些流水线里现在依赖安装脚本的部分。