Note
dotnetup はパブリック プレビュー段階です。 その機能と動作は、一般公開前に変更される可能性があります。
Dotnetup では、Dotnetup がインストールする .NET SDK とランタイムを使用できるように環境を構成できます。 これを行うには、次の環境変数を設定します。
-
PATH:dotnetコマンドをコマンド ラインで使用できるようにします。 Visual Studioや C# Dev Kit などの開発ツールでも、PATHを使用して .NET SDK とランタイムを検出するためにも使用されます。 -
DOTNET_ROOT: フレームワークに依存するアプリケーション実行可能ファイルに、.NET インストールとその共有ランタイムの場所を指示します。
Dotnetup では、これらの環境変数を設定する場所を制御するさまざまなアクセス モードがサポートされています。 初期 dotnetup セットアップ時または後で、dotnetup env コマンドを使用してアクセス モードを選択できます。
| アクセス モード | Behavior |
|---|---|
none |
これらの環境変数は変更しません。
dotnetup dotnet で .NET を実行する |
shell |
シェル プロファイルを変更して、これらの環境変数を設定します。 そのシェルから開始されたプロセスでは、dotnetup によってインストールされた .NET SDK とランタイムが使用されます。 |
everywhere |
システム PATH を変更し、ユーザー レベルの DOTNET_ROOT 環境変数を設定します。 Windowsでのみ使用できます。 |
既定では、dotnetup はアクセス モードの設定に関係なく、PATH にも自身を追加します。 これは、 dotnetup env set --dotnetup-on-path <true|false>で制御できます。
Everywhere モードの考慮事項
Everywhere モードは Windows で既定となっているため、dotnetup によってインストールされた SDK とランタイムは、開発ツールや、シェルとして cmd を使用するターミナルから利用できます。 ただし、主に、.NET SDK とランタイムのマシン全体のインストールとやり取りする方法に関して注意する必要がある点がいくつかあります。
.NETのマシン全体のインストールは、Program Files フォルダーの下にあります。 これらは、.NET ダウンロード ページからダウンロードできるインストーラーを使用してインストールできます。 Visual Studioは、.NET SDK とランタイムをマシン全体にインストールします。また、フレームワークに依存するアプリケーションのインストーラーは、アプリケーションが依存する .NET ランタイムをマシン全体の場所にインストールすることもできます。
everywhere モードでは、ユーザーローカルの dotnetup 管理 .NET インストール ルートによって、コンピューター全体の .NET インストール ルートがオーバーライドされます。 つまり、Program Files にインストールされている .NET SDK とランタイムは利用できなくなります。 これらの SDK に依存するプロジェクトは、一致する SDK がインストールされていない場合、ビルドに失敗します。 一致するランタイムがインストールされていない場合、フレームワークに依存するアプリケーションは、"このアプリケーションを実行するには、.NETをインストールまたは更新する必要があります" というエラーで起動に失敗します。
このようなエラーを回避するために、dotnetup の初期セットアップでは、既存のシステム .NET SDK とランタイムのインストールを移行するオプションが提供されます。
dotnetup runtime install --migrate-from-system を実行して SDK を、または dotnetup sdk install --migrate-from-system を実行してランタイムを明示的に移行することもできます。
Everywhere モードをオンまたはオフにするには、システム PATH を変更する必要があり、その操作には昇格が必要です(つまり、UAC プロンプトの承認または「管理者として実行」が必要です)。 これは、.NET 用のコンピューター全体のインストーラーによって、Program Files の .NET インストール ルートがシステム PATH に追加され、コマンドを解決するときにシステム PATH がユーザー レベルの PATH よりも優先されるためです。 そのため、dotnetup は、dotnetup の .NET インストール ルートが優先されるようにシステム PATH を変更する必要があります。
システム PATH はすべてのユーザーに適用されるため、これらの変更は他のユーザーに影響を与える可能性があります。 システム PATH に追加されるパスは、既定ではユーザーのローカル AppData フォルダーの下にあります。 これは通常、他のユーザーがアクセスできないため、解決される dotnet のバージョンには影響しません。 ただし、昇格されたプロセス (管理者として実行されているプロセス) はパスを読み取ることができ、別のユーザーの .NET SDK またはランタイムを予期せず解決してしまう可能性があります。
サポートされているシェル
プロファイルとスクリプト生成のサポート:
- Bash
- Z シェル
- 魚
- Pwsh (PowerShell Core)
- PowerShell
--shellを渡さない場合、dotnetupは現在のシェルを検出します。 検出が使用できない場合、または別のプロファイルを更新したい場合は、明示的なシェルを使用します。
dotnetup env set shell --shell zsh
保存済みおよび観測状態
dotnetup.config.json は、選択したアクセス モードと、 dotnetup を PATHにするかどうかを格納します。
dotnetup env show は、その構成を現在のプロファイルと環境と比較します。 観察された状態が一致しない場合は、ドリフトを報告します。
保存されている構成を再適用してドリフトを修正:
dotnetup env set
現在のターミナル
プロファイルとWindows環境の変更は、現在のプロセスの環境を書き換えるものではありません。 新しいターミナルを開き、変更したプロファイルを source コマンドで読み込むか、生成されたスクリプトを実行します。
Bash または Z シェルの場合:
eval "$(dotnetup env script)"
PowerShell の場合:
dotnetup env script --shell pwsh | Invoke-Expression
env script は、選択オプションを渡さない場合に格納された構成に従います。 生成されたコンテンツを選択するには、 --dotnet、 --dotnetup、またはその両方を使用します。
環境構成の削除
すべての管理対象環境の接続を削除します。
dotnetup env clear
このコマンドは次のものと同じです:
dotnetup env set none --dotnetup-on-path false
SDK やランタイムはアンインストールされません。
.NET