Compartilhar via


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

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

Comportamento anterior

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

  • Ao executar o aplicativo por meio de dotnet, subdiretórios relativos ao executável dotnet.
  • Ao executar o aplicativo por meio de seu executável (apphost), o local especificado pelo valor da variável de ambiente DOTNET_ROOT (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 de ambiente DOTNET_MULTILEVEL_LOOKUP=0.

Novo comportamento

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

  • O local especificado pelo valor da variável de ambiente DOTNET_ROOT (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 alteração interruptiva

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

Motivo da alteração

Houve inúmeros 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 de uma instalação privada.
  • Inconsistência entre plataformas (Windows versus não Windows).
  • Interrupções de comportamento, geralmente em sistemas automatizados: uma nova instalação global do .NET pode afetar compilações e testes isolados de outra forma.
  • 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 na falha ao iniciar incluem o local esperado.

APIs afetadas

Nenhum.