La ricerca a più livelli è disabilitata
In Windows, le applicazioni .NET dipendenti dal framework non cercano più framework in diversi percorsi di installazione.
Comportamento precedente
Nelle versioni precedenti, un'applicazione .NET dipendente dal framework ha cercato framework in più percorsi di installazione in Windows. Le posizioni erano:
- Quando si esegue l'applicazione tramite dotnet, le sottodirectory relative all'eseguibile
dotnet
. - Quando si esegue l'applicazione tramite il relativo eseguibile (
apphost
), il percorso specificato dal valore della variabile di ambienteDOTNET_ROOT
(se impostato). - Percorso di installazione registrato a livello globale in HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (se impostato).
- Percorso di installazione predefinito di %ProgramFiles%\dotnet (o %ProgramFiles(x86)%\dotnet per i processi a 32 bit in Windows a 64 bit).
Questo comportamento di ricerca a più livelli era abilitato per impostazione predefinita, ma poteva essere disabilitato impostando la variabile di ambiente DOTNET_MULTILEVEL_LOOKUP=0
.
Nuovo comportamento
Le applicazioni destinate a .NET 7 o una versione successiva cercano solo framework in un'unica posizione, ovvero il primo percorso in cui viene trovata un'installazione .NET. Quando si esegue un'applicazione tramite dotnet, i framework vengono cercati solo nelle sottodirectory relative all'eseguibile dotnet
. Quando un'applicazione viene eseguita tramite il relativo eseguibile (apphost
), i framework vengono cercati solo nel primo dei percorsi elencati in precedenza in cui viene trovato .NET:
- Posizione specificata dal valore della variabile di ambiente
DOTNET_ROOT
(se impostata). - Percorso di installazione registrato a livello globale in HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (se impostato).
- Percorso di installazione predefinito di %ProgramFiles%\dotnet (o %ProgramFiles(x86)%\dotnet per i processi a 32 bit in Windows a 64 bit).
Versione di introduzione
.NET 7
Tipo di modifica che causa un'interruzione
Questa modifica può influire sulla compatibilità binaria.
Motivo della modifica
Sono stati riscontrati numerosi problemi causati dalla ricerca a più livelli:
- Confusione per gli utenti: l'applicazione può scegliere un percorso di installazione globale o predefinito nonostante l'esecuzione di .NET da un'installazione privata.
- Incoerenza tra piattaforme (Windows e non Windows).
- Interruzioni di comportamento, spesso nei sistemi automatizzati: una nuova installazione globale di .NET può influire altrimenti su compilazioni e test isolati.
- Problemi di prestazioni.
Azione consigliata
Assicurarsi che la versione richiesta di .NET sia installata nel percorso di installazione .NET singolo. I messaggi di errore generati in caso di errore di avvio includono la posizione prevista.
API interessate
Nessuno.