簡化 .NET 安裝與版本管理的 Installs with dotnetup
摘要 : .NET Up 以跨平台、一致化方式簡化 .NET 安裝、更新與版本管理,提升開發者與自動化代理的使用體驗。
內容:
在這場 Build 分享中,講者介紹了微軟正在開發的新工具「Installs with dotnetup」,目標是解決目前 .NET 在不同平台上的安裝與版本管理過於分散、複雜的問題。現今使用者安裝 .NET 的方式很多,包含 Visual Studio、VS Code 擴充功能、Winget、Homebrew、官方安裝腳本,以及各種社群版本管理工具,如 DNVM、asdf 等,造成使用體驗不一致,也增加維護與支援難度。
尤其在 Linux 環境中,.NET 安裝情境更加複雜。開發者常需在發行版套件、微軟提供的套件、手動安裝腳本與本地版本管理工具之間做選擇,還要考量是否需要特定 feature band、不同專案是否要使用不同 SDK 版本,以及本地安裝與全域安裝之間可能產生的衝突。這些問題不只讓使用者困擾,也讓微軟在除錯與支援時更難確認安裝來源與正確性。
為了解決這些痛點,.NET 團隊提出 Installs with dotnetup。這是一個跨平台、快速、輕量的工具,採用 Native AOT,主打「使用者層級的全域安裝」,也就是安裝在使用者自己的目錄中,不需系統管理員權限,也不影響同一台機器上的其他使用者。它希望提供一致的操作方式,讓任何作業系統上的開發者都能用相同方法安裝與管理 .NET。
.NET Up 的核心理念之一,是延續現有開發者已經熟悉的設定方式,例如 global.json。工具能讀取專案中的 SDK 需求,自動安裝符合版本規則的 .NET SDK,並支援更新與版本追蹤。除了安裝外,.NET Up 也會記錄目前系統中安裝了哪些 SDK、追蹤哪些版本通道,讓後續更新可以更自動、更有脈絡,而不是單純地下載壓縮檔後自行管理。
講者展示了 .NET Up 的實際操作流程。使用者只需初始化 .NET Up,它就能下載最新 SDK,並自動設定 shell 環境,讓後續終端機可直接使用 .NET 與 .NET Up。接著進入某個專案目錄後,執行安裝命令,.NET Up 會根據 global.json 自動判斷該專案需要的 SDK 版本,例如安裝特定 feature band 或依 rolling forward 規則選擇對應版本,讓開發者不必再手動比對版本與處理相容性。
這項能力對開源貢獻、團隊協作與自動化代理特別重要。過去開發者常在 clone 專案後才發現本機 SDK 版本不符,導致 build 失敗,還要自行找出正確版本。現在透過 .NET Up,可以在本機端像 CI/CD 一樣,自動依照專案需求補齊所需 SDK,降低進入專案的門檻與設定成本。
除了 SDK 管理,Installs with dotnetup 也進一步處理 runtime 安裝需求。講者以多目標測試情境為例,說明開發者可能只想使用最新 SDK 進行建置,但測試時仍需要 .NET 8、9、10 等不同 runtime。過去這通常得安裝多套完整 SDK 才能解決,但其實並不高效。.NET Up 的方向是讓開發者只保留需要的 SDK,再依測試與執行需求額外安裝對應 runtimes,讓環境更精簡也更合理。
在工具設計上,Installs with dotnetup 不只是一個命令列工具,也規劃成未來可供其他工具整合的基礎元件。團隊希望它的安裝記錄、版本資訊與簽章驗證機制,未來能與 Dependabot、Renovate 等生態系整合,成為 .NET 工具鏈供應鏈管理與自動化治理的一部分。這不只是安裝工具,更可能成為 .NET 開發環境管理的共同基礎。
安全性也是 Installs with dotnetup 的重要方向。團隊正與 .NET 發行團隊合作,讓 SDK、runtime 與相關 manifests 都具備完整簽章驗證,確保使用者取得的是微軟正式提供的內容。這能提升來源可信度、供應鏈安全性與審計能力,補足以往使用者層級安裝方式在安全與可追蹤性上的不足。
未來規劃方面,內部預覽版將聚焦於穩定版 SDK 管理、nightly/daily SDK 安裝,以及 one-shot execution 功能。這項功能可讓開發者指定某個 .NET 版本來執行特定命令,例如比較 .NET 10 與 .NET 11 preview 執行 build 的差異,方便進行 A/B 測試與快速回報問題,而不影響目前全域環境。
公開預覽階段則會加入 Installs with dotnetup 自我更新、更新通知、完整簽章驗證,以及提供給 AI/LLM 與自動化代理使用的技能與操作規範,讓代理工具可以更安全、正確地使用 .NET Up,而不再透過片段文件自行下載、解壓與設定環境。這將讓人類開發者與自動化系統都能有一致且可靠的體驗。
整體來看,.NET Up 的定位非常明確:它不是用來取代正式生產環境中的套件管理,而是專為開發階段打造的 .NET 工具鏈管理方案。它希望讓開發者只需 clone 專案、執行安裝命令,就能快速進入可工作的狀態,同時也讓代理、CI/CD 與版本測試流程更簡單、更安全。如果後續落地順利,.NET Up 有機會成為 .NET 開發生態中極具代表性的基礎工具。