ルート フォルダー内のツール マニフェスト

.NET では、 DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT 環境変数でオーバーライドしない限り、Windows のルート フォルダー内のローカル ツール マニフェスト ファイルを検索しなくなりました。 この変更は Linux または macOS には影響しません。

以前の動作

以前は、.NET SDK ローカル ツールは、ツール マニフェストを検索するときに、すべてのプラットフォームのルート フォルダーをチェックしていました。 検索は、マニフェストが見つかるまで、現在のディレクトリからディレクトリ ツリーの上位に向かってルート フォルダーまで続いていました。 各レベルでは、.NET は dotnet-tools.json という名前のツール マニフェストを、.config サブフォルダー内で検索します。 Windows システムでは、他にツール マニフェストが見つからなかった場合、SDK は最終的に C:\.config\dotnet-tools.json でツール マニフェストを検索していました。

新しい動作

.NET は、DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT 環境変数を使用してオーバーライドしない限り、Windows では、既定で現在のディレクトリ ツリーのルート フォルダー内を検索しなくなりました。 既定では、DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOTfalse に設定されています。

導入されたバージョン

  • .NET SDK 7.0.3xx
  • .NET SDK 7.0.1xx
  • .NET SDK 6.0.4xx
  • .NET SDK 6.0.3xx
  • .NET SDK 6.0.1xx
  • .NET SDK 3.1.4xx

破壊的変更の種類

この変更は、動作変更です。

変更理由

この変更は、セキュリティ上の問題に対処するために行われました。 すべてのユーザーが Windows の C:\ ディレクトリにファイルとフォルダーを作成できるため、特権の低い攻撃者が C:\.config\dotnet-tools.json ファイルをハイジャックする可能性があります。 管理者が dotnet ツール コマンドを実行すると、このツールが、ファイルから悪意のある構成情報を読み取り、悪意のあるツールをダウンロードして実行する可能性があります。

新しい動作を無効にするには、DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT環境変数を true または 1 に設定します。

関連項目