次の方法で共有


複数レベルの検索の無効化

Windows では、フレームワークに依存する .NET アプリケーションは、複数のインストール場所にあるフレームワークを検索しなくなりました。

以前の動作

以前のバージョンでは、フレームワークに依存する .NET アプリケーションが、Windows 上の複数のインストール場所にあるフレームワークを検索しました。 場所は次のとおりです。

  • dotnet を介してアプリケーションを実行する場合、dotnet実行可能ファイルを基準とするサブディレクトリ。
  • 実行可能ファイル (apphost) を介してアプリケーションを実行する場合、 DOTNET_ROOT 環境変数の値で指定された場所 (設定されている場合)。
  • HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (設定されている場合) のグローバルに登録されたインストール場所。
  • \dotnet (または %ProgramFiles(x86)%ProgramFiles%の既定のインストール場所%64 ビット Windows 上の 32 ビット プロセスの場合は \dotnet)。

この複数レベルの参照動作は既定で有効になっていますが、環境変数を DOTNET_MULTILEVEL_LOOKUP=0設定することで無効にすることができます。

新しい動作

.NET 7 以降のバージョンを対象とするアプリケーションは、.NET インストールが見つかった最初の場所である 1 つの場所でのみフレームワークを検索します。 dotnet を使用してアプリケーションを実行する場合、フレームワークは、dotnet実行可能ファイルを基準にしたサブディレクトリ内でのみ検索されます。 実行可能ファイル (apphost) を介してアプリケーションを実行する場合、フレームワークは、.NET が見つかった次の場所の最初の場所でのみ検索されます。

  • DOTNET_ROOT環境変数の値で指定された場所 (設定されている場合)。
  • HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (設定されている場合) のグローバルに登録されたインストール場所。
  • \dotnet (または %ProgramFiles(x86)%ProgramFiles%の既定のインストール場所%64 ビット Windows 上の 32 ビット プロセスの場合は \dotnet)。

導入されたバージョン

.NET 7

破壊的変更の種類

この変更は 、バイナリの互換性に影響する可能性があります。

変更の理由

複数レベルの検索によって発生する多くの問題が発生しました。

  • ユーザーの混乱: プライベート インストールから .NET を実行しているにもかかわらず、アプリケーションはグローバルまたは既定のインストール場所を選択できます。
  • プラットフォーム間の不整合 (Windows と Windows 以外)。
  • 多くの場合、自動システムでは動作が中断されます。新しいグローバル .NET インストールは、分離されたビルドとテストに影響を与える可能性があります。
  • パフォーマンスの問題。

必要なバージョンの .NET が 1 つの .NET インストール場所にインストールされていることを確認します。 起動に失敗したときに出力されるエラー メッセージには、想定される場所が含まれます。

影響を受ける API

なし。