微软近日发布dotnetup公开预览版,作为跨平台工具链管理器,该版本支持在用户账户内对.NET SDK与运行时进行安装、更新及移除,突破了传统按系统目录管理的局限。据.NET Blog披露,该工具借鉴rustup、nvm设计,由Chet Husk于10月15日宣布,旨在精准匹配发布版本,支持多通道管理。其核心优势在于统一管理安装意图,可解析不同版本层级,且维护时保持版本一致性,同时遵循本地化数据存储策略。该工具还基于全局配置实现构建确定性,支持Windows、macOS、Linux多平台部署,多种接入模式适用于不同场景,并具备完整的组件管理与自动清理能力。不过,其安装方式存在显著争议,everywhere模式因系统级修改权限引发安全风险,Visual Studio等主流工具无法识别其安装版本,易造成构建失败。为解决该问题,dotnetup已规划配套迁移方案及软件包下载路径,并明确推出自动化更新、组件管理等功能,目标于后续完善适配生态,以应对开发者在不同场景下的实际部署需求。

--91likeyou---

安装时,通过 curl 或 irm 从 aka.ms 获取引导脚本。文档称,脚本会在校验 SHA-512 校验和后,将可执行文件放入 ~/.dotnetup;随后,dotnetup init 会安装最新的稳定版 SDK 并配置 shell。文档列出了三种接入模式:none 模式通过 dotnetup dotnet 运行 .NET,不修改环境;shell 模式修改 shell 配置文件;everywhere 模式是仅适用于 Windows 的默认模式,会修改系统 PATH,因此需要提升权限。

文档还警告说,everywhere模式的优先级高于全机器安装的版本,包括 Visual Studio 安装的版本。因此,如果某个项目需要的 SDK 尚未通过 dotnetup 安装,构建就会失败。为避免这种情况,据称安装流程会提供迁移现有全机器安装版本的选项。

据报道,每月的维护更新可以通过一条 dotnetup update 命令完成:它会重新解析所有已跟踪的通道,并安装各通道匹配的最新版本。也可以针对单个运行时执行操作,例如 dotnetup runtime install aspnetcore@10.0。文档列出的受支持组件包括 SDK、.NET 运行时、ASP.NET Core 运行时和 Windows Desktop 运行时。文章称,更新后,dotnetup 会移除不再被任何需求使用的组件;sdk uninstall 和 runtime uninstall 也会触发相同的清理操作。

此外,预览版和每日构建版可以通过 dotnetup sdk install preview 或 dotnetup runtime install daily 并行安装,不过文档指出,每日构建版没有代码签名。dotnetup self update 用于更新工具本身。与 dotnet-install 脚本相比,文章称 dotnetup 能跟踪已安装的组件、验证签名和校验和、更快地安装多个版本,并在所有平台上提供统一的命令行界面。公布的路线图包括 Windows 上的管理员级安装、替换 GitHub Actions 和 Azure DevOps 任务中基于脚本的部分,以及提供智能体技能,让 AI 助手默认使用这款工具。

与此同时,在 r/dotnet 上,一位已使用该工具数月的开发者称赞它简化了 Linux 上的配置,但获赞最多的评论提出疑问:既然已有不少人使用 mise,为什么还要选择 dotnetup?

其他人批评了通过 curl 获取脚本并直接交给 shell 执行的引导方式,要求提供 winget、apt 或 Homebrew 软件包,指出 Visual Studio 无法识别 dotnetup 安装的版本,并希望它也能管理 dotnet-ef 等命令行工具。Husk 在博客评论区回复称,计划在完成用户验证后提供软件包。

感兴趣的读者可以在 Microsoft Learn 上查看完整文档,包括命令参考和遥测详情;反馈则可提交至 dotnet/sdk GitHub Discussions 的 dotnetup 分类。

:

🔥 热词:#dotnetup · #NET · #10 · #SDK · #微软推出 · #多版本管理更省心 · #安装方式却让开发者皱眉 · #微软发布了