Wyszukiwanie wielowymiarowe jest wyłączone

W systemie Windows aplikacje .NET zależne od platformy nie wyszukują już struktur w wielu lokalizacjach instalacji.

Poprzednie zachowanie

W poprzednich wersjach aplikacja .NET zależna od platformy szukała struktur w wielu lokalizacjach instalacji w systemie Windows. Lokalizacje to:

  • Podczas uruchamiania aplikacji za pośrednictwem aplikacji dotnet podkatalogi względem dotnet pliku wykonywalnego.
  • Podczas uruchamiania aplikacji za pośrednictwem pliku wykonywalnego (apphost) lokalizacja określona przez wartość DOTNET_ROOT zmiennej środowiskowej (jeśli jest ustawiona).
  • Globalnie zarejestrowana lokalizacja instalacji w HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (jeśli ustawiono).
  • Domyślna lokalizacja instalacji %ProgramFiles%\dotnet (lub %ProgramFiles(x86)%\dotnet dla procesów 32-bitowych w 64-bitowym systemie Windows.

To zachowanie wyszukiwania wielostopniowego zostało domyślnie włączone, ale można je wyłączyć, ustawiając zmienną środowiskową DOTNET_MULTILEVEL_LOOKUP=0.

Nowe zachowanie

Aplikacje przeznaczone dla platformy .NET 7 lub nowszej szukają tylko struktur w jednej lokalizacji, która jest pierwszą lokalizacją, w której znajduje się instalacja platformy .NET. W przypadku uruchamiania aplikacji za pośrednictwem platformy dotnet są wyszukiwane tylko w podkatalogach względem dotnet pliku wykonywalnego. W przypadku uruchamiania aplikacji za pośrednictwem jej pliku wykonywalnego (apphost) struktury są wyszukiwane tylko w pierwszej z następujących lokalizacji, w których znaleziono platformę .NET:

  • Lokalizacja określona przez wartość zmiennej środowiskowej DOTNET_ROOT (jeśli jest ustawiona).
  • Globalnie zarejestrowana lokalizacja instalacji w HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (jeśli ustawiono).
  • Domyślna lokalizacja instalacji %ProgramFiles%\dotnet (lub %ProgramFiles(x86)%\dotnet dla procesów 32-bitowych w 64-bitowym systemie Windows.

Wprowadzona wersja

.NET 7

Typ zmiany powodującej niezgodność

Ta zmiana może mieć wpływ na zgodność binarną.

Przyczyna wprowadzenia zmiany

Wystąpiły liczne problemy spowodowane przez wyszukiwanie na wielu poziomach:

  • Nieporozumienie dla użytkowników: aplikacja może wybrać globalną lub domyślną lokalizację instalacji pomimo uruchamiania platformy .NET z prywatnej instalacji.
  • Niespójność między platformami (Windows a nie windows).
  • Przerwy w zachowaniu, często w zautomatyzowanych systemach: nowa globalna instalacja platformy .NET może mieć wpływ na w przeciwnym razie odizolowane kompilacje i testy.
  • Problemy z wydajnością.

Upewnij się, że wymagana wersja platformy .NET jest zainstalowana w jednej lokalizacji instalacji platformy .NET. Komunikaty o błędach, które są emitowane po niepowodzeniu uruchamiania, obejmują oczekiwaną lokalizację.

Dotyczy interfejsów API

Brak.