dotnetup: .NET にようやく rustup スタイルの SDK バージョンマネージャーが登場
Microsoft は dotnetup を開発しています。これは .NET の SDK とランタイムをインストール、追跡、切り替えするための公式のクロスプラットフォームツールです。その機能と、2026 年 6 月時点での状況を紹介します。
長年にわたり、.NET の SDK を管理するということは、3 つの別々のものを使い分けることを意味していました。ダウンロードページの単体インストーラー、CI 用の dotnet-install スクリプト、そして残された古いバージョンの山を片付けるための dotnet-core-uninstall ツールです。Rust 向けの rustup や Node 向けの nvm のように、SDK をインストールし、追跡し、切り替える単一のコマンドは存在しませんでした。2026 年 6 月から、それが変わりつつあります。Microsoft は dotnetup を開発しており、すでに .NET の SDK が自身をビルドする方法に組み込まれています。
dotnetup とは実際に何か
dotnetup は、.NET の SDK とランタイム向けの公式かつクロスプラットフォームのバージョンマネージャーです。その唯一の仕事は、昇格を必要とせずにユーザースコープのディレクトリにコンポーネントをインストールし、インストール済みのものをマニフェストで追跡し、アクティブなバージョンをクリーンに切り替えることです。管理者の確認ダイアログも、MSI も、レジストリへの手術もありません。
主な動作は次のとおりです。
- SDK とランタイムをユーザー単位でインストールするため、
sudoや昇格されたターミナルは決して必要ありません。 global.jsonを読み取り、リポジトリが固定する正確な SDK を解決してインストールします。- 監査可能な更新とクリーンなアンインストールのために、インストール済みコンポーネントをマニフェストで追跡します。
- multi-targeting のシナリオのために、複数のランタイムを並べてサポートします。
- 高速な起動とサプライチェーンの安全性のために、AOT でコンパイルされ署名されたバイナリとして配布されます。
dotnet/sdk の追跡 issue で確認されている唯一のコマンドはインストールのパスで、ここではビルドスクリプト内でプレビュー SDK を取得するために使用されています。
dotnetup sdk install preview
より広範なコマンドセット(インストール済みバージョンの一覧表示、デフォルトの設定、アンインストール)はまだ公開の場で最終調整中です。そのため、より長い例はあくまで説明用とみなし、確定したものとは考えないでください。
なぜ global.json が本当の利点なのか
今日、複数のリポジトリで .NET を扱う際の厄介な部分は global.json の不一致です。リポジトリをクローンして dotnet build を実行すると、インストールしていない SDK が固定されているためにエラーが出ます。選択肢は、正しいインストーラーを探し出すか、ファイルを編集するかのどちらかしかありません。
{
"sdk": {
"version": "10.0.301",
"rollForward": "latestPatch"
}
}
このファイルを理解するバージョンマネージャーがあれば、解決は 1 つのステップになります。dotnetup をリポジトリに向け、固定された SDK をユーザープロファイルに取得させるだけです。これは、Rust の開発者が rust-toolchain.toml で長年享受してきたのと同じ使い勝手です。
現時点での状況
dotnetup は内部プレビューの段階です。.NET のサイトにはまだ 1 行のインストーラーはなく、今日それを試す実用的な方法はソースからビルドすることです。パブリックプレビューは今後数か月のうちに予定されています。注目すべきは、dotnet/sdk の main ブランチがすでに自身のビルドの一部として dotnetup を使用している点で、これはこれが実験ではなく、.NET インストールの意図された未来であることを示す強いシグナルです。
CI パイプラインを保守している場合や、SDK が厳密に固定されたリポジトリに開発者を参加させる場合、これは注視すべきツールです。進捗は ビルドスクリプトで dotnetup を使用することについての dotnet/sdk の issue と、main ブランチが現在それでビルドされていることを示す周知用の issue で追跡してください。
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.