Sökning på flera nivåer är inaktiverat
I Windows söker ramverksberoende .NET-program inte längre efter ramverk på flera installationsplatser.
Tidigare beteende
I tidigare versioner sökte ett ramverksberoende .NET-program efter ramverk på flera installationsplatser i Windows. Platserna var:
- När du kör programmet via dotnet, underkataloger i förhållande till den
dotnet
körbara filen. - När du kör programmet via dess körbara (
apphost
), den plats som anges av värdet för miljövariabeln (om denDOTNET_ROOT
anges). - Den globalt registrerade installationsplatsen i HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (om den anges).
- Standardinstallationsplatsen för %ProgramFiles%\dotnet (eller %ProgramFiles(x86)%\dotnet för 32-bitarsprocesser i 64-bitars Windows).
Det här uppslagsbeteendet på flera nivåer har aktiverats som standard men kan inaktiveras genom att ange miljövariabeln DOTNET_MULTILEVEL_LOOKUP=0
.
Nytt beteende
Program som riktar in sig på .NET 7 eller en senare version letar bara efter ramverk på en plats, vilket är den första platsen där en .NET-installation hittas. När du kör ett program via dotnet söks ramverk endast efter i underkataloger i förhållande till den dotnet
körbara filen. När du kör ett program via dess körbara (apphost
) söks ramverk bara efter på den första av följande platser där .NET hittas:
- Den plats som anges av värdet för miljövariabeln (om den
DOTNET_ROOT
anges). - Den globalt registrerade installationsplatsen i HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (om den anges).
- Standardinstallationsplatsen för %ProgramFiles%\dotnet (eller %ProgramFiles(x86)%\dotnet för 32-bitarsprocesser i 64-bitars Windows).
Version introducerad
.NET 7
Typ av icke-bakåtkompatibel ändring
Den här ändringen kan påverka binär kompatibilitet.
Orsak till ändringen
Det har uppstått flera problem som orsakats av uppslag på flera nivåer:
- Förvirring för användare: programmet kan välja en global eller standardinstallationsplats trots att .NET körs från en privat installation.
- Inkonsekvens mellan plattformar (Windows jämfört med icke-Windows).
- Beteendebrott, ofta i automatiserade system: en ny global .NET-installation kan påverka annars isolerade versioner och tester.
- Prestandaproblem.
Rekommenderad åtgärd
Kontrollera att den nödvändiga versionen av .NET är installerad på den enda .NET-installationsplatsen. De felmeddelanden som genereras om det inte går att starta inkluderar den förväntade platsen.
Berörda API:er
Inga.