Start Debugging

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 も、レジストリへの手術もありません。

主な動作は次のとおりです。

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/sdkmain ブランチがすでに自身のビルドの一部として 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.

< 戻る