A pesquisa de vários níveis está desativada

No Windows, os aplicativos .NET dependentes da estrutura não procuram mais estruturas em vários locais de instalação.

Comportamento anterior

Em versões anteriores, um aplicativo .NET dependente de estrutura procurava estruturas em vários locais de instalação no Windows. Os locais foram:

  • Ao executar o aplicativo através de dotnet, subdiretórios relativos ao dotnet executável.
  • Ao executar o aplicativo através de seu executável (apphost), o local especificado pelo valor da variável de DOTNET_ROOT ambiente (se definido).
  • O local de instalação registrado globalmente em HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (se definido).
  • O local de instalação padrão de %ProgramFiles%\dotnet (ou %ProgramFiles(x86)%\dotnet para processos de 32 bits no Windows de 64 bits).

Esse comportamento de pesquisa de vários níveis foi habilitado por padrão, mas pode ser desabilitado definindo a variável DOTNET_MULTILEVEL_LOOKUP=0de ambiente .

Novo comportamento

Os aplicativos destinados ao .NET 7 ou uma versão posterior procuram estruturas apenas em um local, que é o primeiro local onde uma instalação do .NET é encontrada. Ao executar um aplicativo através de dotnet, as estruturas são pesquisadas apenas em subdiretórios relativos ao dotnet executável. Ao executar um aplicativo por meio de seu executável (apphost), as estruturas só são pesquisadas no primeiro dos seguintes locais onde o .NET é encontrado:

  • O local especificado pelo valor da DOTNET_ROOT variável de ambiente (se definido).
  • O local de instalação registrado globalmente em HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation (se definido).
  • O local de instalação padrão de %ProgramFiles%\dotnet (ou %ProgramFiles(x86)%\dotnet para processos de 32 bits no Windows de 64 bits).

Versão introduzida

.NET 7

Tipo de mudança de rutura

Essa alteração pode afetar a compatibilidade binária.

Razão para a alteração

Houve vários problemas causados pela pesquisa de vários níveis:

  • Confusão para os usuários: o aplicativo pode escolher um local de instalação global ou padrão, apesar de executar o .NET a partir de uma instalação privada.
  • Inconsistência entre plataformas (Windows versus não-Windows).
  • Quebras de comportamento, geralmente em sistemas automatizados: uma nova instalação global do .NET pode afetar compilações e testes isolados.
  • Problemas de desempenho.

Verifique se a versão necessária do .NET está instalada no único local de instalação do .NET. As mensagens de erro emitidas ao falhar na inicialização incluem o local esperado.

APIs afetadas

Nenhum.