Compartir a través de


La búsqueda de varios niveles está deshabilitada

En Windows, las aplicaciones .NET dependientes del marco ya no buscan marcos en varias ubicaciones de instalación.

Comportamiento anterior

En versiones anteriores, una aplicación .NET dependiente del marco de trabajo busca marcos en varias ubicaciones de instalación en Windows. Las ubicaciones eran:

  • Al ejecutar la aplicación mediante dotnet, los subdirectorios relativos al ejecutable dotnet.
  • Al ejecutar la aplicación a través de su ejecutable (apphost), la ubicación especificada por el valor de la variable de entorno DOTNET_ROOT (si se ha establecido).
  • Ubicación de instalación registrada globalmente en HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (si se establece).
  • Ubicación de instalación predeterminada de %ProgramFiles%\dotnet (o %ProgramFiles(x86)%\dotnet para procesos de 32 bits en Windows de 64 bits).

Este comportamiento de búsqueda de varios niveles se ha habilitado de forma predeterminada, pero se puede deshabilitar estableciendo la variable DOTNET_MULTILEVEL_LOOKUP=0de entorno .

Nuevo comportamiento

Las aplicaciones que tienen como destino .NET 7 o una versión posterior solo buscan marcos en una ubicación, que es la primera ubicación donde se encuentra una instalación de .NET. Cuando se ejecuta una aplicación a través de dotnet, los marcos solo se buscan en subdirectorios relativos al dotnet ejecutable. Cuando se ejecuta una aplicación a través de su archivo ejecutable (apphost), los marcos solo se buscan en la primera de las siguientes ubicaciones donde se encuentra .NET:

  • Ubicación especificada por el valor de la DOTNET_ROOT variable de entorno (si se establece).
  • Ubicación de instalación registrada globalmente en HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (si se establece).
  • Ubicación de instalación predeterminada de %ProgramFiles%\dotnet (o %ProgramFiles(x86)%\dotnet para procesos de 32 bits en Windows de 64 bits).

Versión introducida

.NET 7

Tipo de cambio disruptivo

Este cambio puede afectar a la compatibilidad binaria.

Motivo del cambio

La búsqueda en varios niveles ha provocado varios problemas:

  • Confusión para los usuarios: la aplicación puede elegir una ubicación de instalación global o predeterminada a pesar de ejecutar .NET desde una instalación privada.
  • Incoherencia entre plataformas (Windows frente a no Windows).
  • Interrupciones de comportamiento, a menudo en sistemas automatizados: una nueva instalación global de .NET puede afectar a compilaciones y pruebas aisladas de otro modo.
  • Problemas de rendimiento.

Asegúrese de que la versión necesaria de .NET esté instalada en la única ubicación de instalación de .NET. Los mensajes de error que se emiten al no iniciarse incluyen la ubicación esperada.

Las APIs afectadas

Ninguno.