La recherche à plusieurs niveaux est désactivée

Sur Windows, les applications .NET dépendantes du framework ne recherchent plus les frameworks dans plusieurs emplacements d’installation.

Comportement précédent

Dans les versions précédentes, une application .NET dépendante du framework recherchait les frameworks dans plusieurs emplacements d’installation sur Windows. Les emplacements étaient :

  • Si l’application s’exécutait avec dotnet, sous-répertoires relatifs au fichier exécutable dotnet.
  • Si l’application s’exécutait avec son exécutable (apphost), emplacement spécifié par la valeur de la variable d’environnement DOTNET_ROOT (si définie).
  • Emplacement d’installation inscrit globalement dans HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (si défini).
  • Emplacement d’installation par défaut %ProgramFiles%\dotnet (ou %ProgramFiles(x86)%\dotnet pour les processus 32 bits sur Windows 64 bits).

Ce comportement de recherche multiniveau était activé par défaut, mais il était possible de le désactiver en définissant la variable d’environnement DOTNET_MULTILEVEL_LOOKUP=0.

Nouveau comportement

Les applications qui ciblent .NET 7 ou une version ultérieure recherchent les frameworks dans un seul endroit uniquement, qui est le premier emplacement où une installation .NET est trouvée. Si l’application s’exécute avec dotnet, les frameworks sont uniquement recherchés dans les sous-répertoires relatifs à l’exécutable dotnet. Si une application s’exécute avec son exécutable (apphost), les frameworks sont uniquement recherchés dans le premier des emplacements suivants où .NET est trouvé :

  • Emplacement spécifié par la valeur de la variable d’environnement DOTNET_ROOT (si définie).
  • Emplacement d’installation inscrit globalement dans HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (si défini).
  • Emplacement d’installation par défaut %ProgramFiles%\dotnet (ou %ProgramFiles(x86)%\dotnet pour les processus 32 bits sur Windows 64 bits).

Version introduite

.NET 7

Type de changement cassant

Ce changement peut affecter la compatibilité binaire.

Raison du changement

De nombreux problèmes ont été causés par la recherche multiniveau :

  • Confusion pour les utilisateurs : l’application peut choisir un emplacement d’installation global ou par défaut malgré l’exécution de .NET à partir d’une installation privée.
  • Incohérence entre les plateformes (Windows et non-Windows).
  • Changements de comportement, souvent dans les systèmes automatisés : une nouvelle installation .NET globale peut affecter les builds et tests isolés.
  • Problèmes de performances.

Vérifiez que la version nécessaire de .NET est installée dans le seul emplacement d’installation de .NET. Les messages d’erreur émis en cas d’échec du lancement indiquent l’emplacement attendu.

API affectées

Aucun.