Partager via


La recherche à plusieurs niveaux est désactivée

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

Comportement précédent

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

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

Ce comportement de recherche à plusieurs niveaux a été activé par défaut, mais peut être désactivé en définissant la variable DOTNET_MULTILEVEL_LOOKUP=0d’environnement.

Nouveau comportement

Les applications qui ciblent .NET 7 ou une version ultérieure recherchent uniquement des frameworks dans un emplacement, qui est le premier emplacement où une installation .NET est trouvée. Lors de l’exécution d’une application via dotnet, les frameworks sont uniquement recherchés dans les sous-répertoires par rapport à l’exécutable dotnet . Lors de l’exécution d’une application via son exécutable (apphost), les frameworks sont uniquement recherchés dans les premiers 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 enregistré globalement dans HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (si défini).
  • Emplacement d’installation par défaut de %ProgramFiles%\dotnet (ou %ProgramFiles(x86)%\dotnet pour les processus 32 bits sur Windows 64 bits).

Version introduite

.NET 7

Type de changement cassant

Cette modification peut affecter la compatibilité binaire.

Raison de la modification

Il y a eu de nombreux problèmes provoqué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).
  • Interruptions 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 requise de .NET est installée à l’emplacement d’installation unique de .NET. Les messages d’erreur émis en cas de défaillance de lancement incluent l’emplacement attendu.

API affectées

Aucun.