Dela via


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 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).

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.

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.