dotnetup のしくみ

Note

dotnetup はパブリック プレビュー段階です。 その機能と動作は、一般公開前に変更される可能性があります。

dotnetup は、要求した内容を、それがインストールするファイルから分離します。 このモデルを使用すると、複数の要件で 1 つの .NET インストールを共有し、dotnetup は不要になったファイルを削除できます。

インストール先

.NETインストール ルートは、dotnetupが追跡するディレクトリです。 インストール ルート ディレクトリには次のものがあります:

  • 完全修飾ディレクトリ パス。
  • アーキテクチャ: x86、 x64、または arm64。
  • channels で指定される 0 個以上のインストール仕様。
  • 0 個以上の具体的なインストール。

現在の CLI は、実行中の dotnetup プロセスのアーキテクチャ向けにインストールされます。 アーキテクチャ オプションはありません。

既定の dotnetup 管理の .NET インストール ルートは、dotnetup データ ディレクトリの dotnet サブディレクトリです。

Platform 既定のインストール ルート
Windows %LOCALAPPDATA%\dotnetup\dotnet
macOS ~/Library/Application Support/dotnetup/dotnet
Linux $XDG_DATA_HOME/dotnetup/dotnet、または~/.local/share/dotnetup/dotnetが設定されていない場合はXDG_DATA_HOME

--install-pathを使用して、別のインストール ルートを選択します。 明示的なインストール パスは、global.json からのパスよりも優先され、既定のインストール ルートよりも優先されます。

dotnetupは、Program Files\dotnetや/usr/share/dotnetなどのシステム管理された .NET ディレクトリには書き込みません。

コンポーネント

dotnetup は、次のコンポーネントの種類を管理します。

コンポーネント ランタイム仕様名 インストールされたコンテンツ
.NET SDK 適用なし SDK、ホスト、ランタイム、ターゲット パック、および関連する SDK コンテンツ
.NET ランタイム runtime Microsoft.NETCore.App runtime
ASP.NET Core ランタイム aspnetcore Microsoft.AspNetCore.App runtime
Windows デスクトップ ランタイム windowsdesktop Microsoft.WindowsDesktop.AppWindowsのランタイム

ASP.NET Coreエイリアスaspnetと Windows Desktop エイリアス desktopは、ランタイム コンポーネントの仕様で受け入れられます。

インストール仕様

インストール仕様は、コンポーネントとチャネルまたは正確なバージョンを記録します。 たとえば、10.0.1xx の SDK 仕様は、「10.0.1xx 機能バンド内で最新の SDK を維持する」ことを意味します。

サポートされているさまざまな種類のチャネルとバージョンの詳細については、チャネルとバージョンをご覧ください。

各仕様には、次のいずれかのソースがあります。

  • Explicit: コマンド ラインでチャネルまたはバージョンを指定しました。
  • GlobalJson: dotnetup は global.json ファイルから SDK 要件を導出しました。

All はアンインストール フィルターです。 仕様ソースとして格納されません。

正確なバージョンはピン留めされている仕様です。 更新コマンドを実行しても、進行しません。 チャネル仕様は、更新時に新しいバージョンに解決される可能性があります。

インストールと共有ファイル

インストールでは、1 つの具象コンポーネント バージョンと、それが使用するサブコンポーネント ディレクトリが記録されます。 2 つの仕様が同じインストールに解決される可能性があります。

アンインストール コマンドは、最初に一致する仕様を削除します。 ガベージ コレクションは、残りの各仕様に一致する最新のインストール済みバージョンを保持します。 インストールとその共有されていないサブコンポーネントは、残りのどの仕様でも必要とされない場合にのみ削除されます。

アンインストールによって状態が変更される前に、別の仕様で要求されたインストールが保持されている場合や、ガベージ コレクションによって追加のインストールが削除される場合は警告します。 対話型モードでは、これらの警告には確認が必要です。 詳細については、「SDK アンインストールの動作」と「ランタイム アンインストールの動作」を参照してください。

追跡されたインストールと追跡されていないインストール

既定では、インストール コマンドはその仕様と結果をマニフェストに記録します。 追跡対象のインストールは、 dotnetupによって一覧表示、更新、および削除できます。

--untracked オプションは、ファイルを記録することなくインストールします。 dotnetup では、これらのファイルの一覧表示、更新、削除は行われません。 このオプションは、別のプロセスがターゲット ディレクトリを所有している場合にのみ使用します。

誤って混在するのを防ぐために、ターゲットに、選択したマニフェストにない既存の.NET インストールが含まれている場合、追跡対象のインストールは失敗します。 別のディレクトリを選択するか、既存のインストールを削除するか、--untracked を使用してください。

状態ファイル

dotnetup データ ディレクトリには、次のユーザー レベルの状態ファイルが含まれています。

ファイル Purpose
dotnetup_manifest.json インストール ルート、インストールの仕様、インストール、および共有サブコンポーネントを追跡します。
dotnetup_manifest.json.sha256 dotnetup が書き込まなかったマニフェスト コンテンツへの変更を検出します。
dotnetup.config.json .NET アクセス モード、dotnetup ディレクトリがPATH上にあるかどうか、および更新通知が有効になっているかどうかを格納します。
update-checks/ dotnetup 更新チェックのタイムスタンプと使用可能なバージョンを格納します。

これらのファイルは編集しないでください。 関連する状態を変更するには、 dotnetup install、 update、 uninstall、および env コマンドを使用します。 dotnetup self update --update-notifications <true|false>を使用して、実行可能ファイルを更新せずに通知設定を変更します。

DOTNET_DOTNETUP_DATA_DIR 環境変数はデータ ディレクトリを変更します。 --manifest-path オプションは、1 つのコマンドで使用されるマニフェストのみを変更します。 構成ファイルまたは既定のインストール ルートは変更されません。

同時実行の操作

インストール、更新、アンインストール、一覧表示、ガベージ コレクションのワークフローは、共有インストール状態へのアクセスを調整します。 複数の仕様を受け入れるコマンドは、インストール前にそれらを解決し、それらを同時にダウンロードできます。 マニフェストの変更はシリアル化された状態を維持します。

自己更新では、dotnetup 実行可能ファイルの置換は、.NET のインストール状態とは別に調整されます。 その他のコマンドは、自己更新によって協調動作用のロックが保持されている間に失敗する可能性があります。 更新が完了したら、これらのコマンドを再試行してください。 詳細については、 dotnetup self updateを参照してください。

参照