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 からのパスよりも優先され、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つの仕様が同じインストールに解決されることがあります。

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

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

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

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

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

状態ファイル

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

ファイル Purpose
dotnetup_manifest.json インストール ルート、インストールの仕様、インストール、および共有サブコンポーネントを追跡します。
dotnetup_manifest.json.sha256 dotnetup が書き込まなかったマニフェスト コンテンツへの変更を検出します。
dotnetup.config.json .NET アクセス モードと、dotnetup ディレクトリがPATH上にあるかどうかを格納します。

これらのファイルは編集しないでください。 関連する状態を変更するには、 dotnetup install、 update、 uninstall、および env コマンドを使用します。

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

同時実行の操作

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

参照