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 deDOTNET_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=0
de 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.
Ação recomendada
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.