Opzoeken op meerdere niveaus is uitgeschakeld
In Windows zoeken frameworkafhankelijke .NET-toepassingen niet langer naar frameworks op meerdere installatielocaties.
Vorig gedrag
In eerdere versies heeft een frameworkafhankelijke .NET-toepassing gezocht naar frameworks in meerdere installatielocaties in Windows. De locaties waren:
- Bij het uitvoeren van de toepassing via dotnet, submappen ten opzichte van het
dotnet
uitvoerbare bestand. - Bij het uitvoeren van de toepassing via het uitvoerbare bestand (
apphost
), de locatie die is opgegeven door de waarde van deDOTNET_ROOT
omgevingsvariabele (indien ingesteld). - De globaal geregistreerde installatielocatie in HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (indien ingesteld).
- De standaardinstallatielocatie van %ProgramFiles%\dotnet (of %ProgramFiles(x86)%\dotnet voor 32-bits processen in 64-bits Windows).
Dit zoekgedrag op meerdere niveaus is standaard ingeschakeld, maar kan worden uitgeschakeld door de omgevingsvariabele DOTNET_MULTILEVEL_LOOKUP=0
in te stellen.
Nieuw gedrag
Toepassingen die zich richten op .NET 7 of een latere versie, zoeken alleen naar frameworks op één locatie. Dit is de eerste locatie waar een .NET-installatie wordt gevonden. Wanneer u een toepassing uitvoert via dotnet, worden frameworks alleen gezocht in submappen ten opzichte van het dotnet
uitvoerbare bestand. Wanneer u een toepassing uitvoert via het uitvoerbare bestand (apphost
), worden frameworks alleen gezocht in de eerste van de volgende locaties waar .NET wordt gevonden:
- De locatie die is opgegeven door de waarde van de
DOTNET_ROOT
omgevingsvariabele (indien ingesteld). - De globaal geregistreerde installatielocatie in HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (indien ingesteld).
- De standaardinstallatielocatie van %ProgramFiles%\dotnet (of %ProgramFiles(x86)%\dotnet voor 32-bits processen in 64-bits Windows).
Versie geïntroduceerd
.NET 7
Type wijziging die fouten veroorzaken
Deze wijziging kan van invloed zijn op binaire compatibiliteit.
Reden voor wijziging
Er zijn talloze problemen veroorzaakt door opzoeken op meerdere niveaus:
- Verwarring voor gebruikers: de toepassing kan een algemene of standaardinstallatielocatie kiezen, ondanks het uitvoeren van .NET vanaf een privé-installatie.
- Inconsistentie tussen platforms (Windows versus niet-Windows).
- Gedrag wordt verbroken, vaak in geautomatiseerde systemen: een nieuwe globale .NET-installatie kan van invloed zijn op anderszins geïsoleerde builds en tests.
- Prestatieproblemen.
Aanbevolen actie
Zorg ervoor dat de vereiste versie van .NET is geïnstalleerd op de enkele .NET-installatielocatie. De foutberichten die worden verzonden bij het starten, bevatten de verwachte locatie.
Betrokken API's
Geen.