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ą.
Zalecana akcja
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.