Búsqueda en varios niveles deshabilitada

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

Comportamiento anterior

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

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

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

Comportamiento nuevo

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. Al ejecutar una aplicación mediante dotnet, los marcos solo se buscan en subdirectorios relativos al ejecutable dotnet. Al ejecutar una aplicación mediante su ejecutable (apphost), los marcos solo se buscan en la primera de las ubicaciones en las que se encuentre .NET:

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

Versión introducida

.NET 7

Tipo de cambio importante

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 o no Windows).
  • Interrupciones de comportamiento, a menudo en sistemas automatizados: una nueva instalación global de .NET puede afectar a las compilaciones y pruebas aisladas que de otro modo estarían aisladas.
  • 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 producirse errores de inicio incluyen la ubicación esperada.

API afectadas

Ninguno.