Solucionar problemas de falhas de inicialização de aplicativos

Este artigo descreve alguns motivos comuns e possíveis soluções para falhas de inicialização de aplicativos. Ele está relacionado a aplicativos dependentes da estrutura, que dependem de uma instalação do .NET em sua máquina.

Se você já sabe qual versão do .NET você precisa, você pode baixá-lo de downloads do .NET.

Instalação do .NET não encontrada

Se uma instalação do .NET não for encontrada, o aplicativo não será iniciado com uma mensagem semelhante a:

You must install .NET to run this application.

App: C:\repos\myapp\myapp.exe
Architecture: x64
Host version: 7.0.0
.NET location: Not found
You must install .NET to run this application.

App: /home/user/repos/myapp/myapp
Architecture: x64
Host version: 7.0.0
.NET location: Not found

Isto pode dever-se a uma confusão de embalagens.

As instalações globais estão registadas em /etc/dotnet/install_location. Em alguns sistemas, também estão presentes ficheiros específicos da arquitetura, como /etc/dotnet/install_location_arm64.

You must install .NET to run this application.

App: /home/user/repos/myapp/myapp
Architecture: x64
Host version: 7.0.0
.NET location: Not found

As instalações globais estão registadas em /etc/dotnet/install_location. Em alguns sistemas, também estão presentes ficheiros específicos da arquitetura, como /etc/dotnet/install_location_arm64.

A mensagem de erro inclui um link para baixar o .NET. Você pode seguir esse link para chegar à página de download apropriada. Você também pode escolher a versão do .NET (especificada por Host version) nos downloads do .NET.

Na página de download da versão necessária do .NET, localize o download do .NET Runtime que corresponde à arquitetura listada na mensagem de erro. Em seguida, você pode instalá-lo baixando e executando um instalador.

O .NET está disponível através de vários gerenciadores de pacotes Linux. Para obter mais informações, consulte Instalar o .NET no Linux. (As versões de visualização do .NET normalmente não estão disponíveis por meio de gerenciadores de pacotes.)

Você precisa instalar o pacote .NET Runtime para a versão apropriada, como dotnet-runtime-10.0.

Como alternativa, na página de download da versão .NET necessária, você pode baixar binários para a arquitetura especificada.

Quadro necessário não encontrado

Se uma estrutura necessária ou uma versão compatível não for encontrada, o aplicativo não será iniciado com uma mensagem semelhante a:

You must install or update .NET to run this application.

App: C:\repos\myapp\myapp.exe
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '5.0.15' (x64)
.NET location: C:\Program Files\dotnet\

The following frameworks were found:
  6.0.2 at [c:\Program Files\dotnet\shared\Microsoft.NETCore.App]
You must install or update .NET to run this application.

App: /home/user/repos/myapp/myapp
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '5.0.15' (x64)
.NET location: /usr/share/dotnet/

The following frameworks were found:
  6.0.2 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]
You must install or update .NET to run this application.

App: /home/user/repos/myapp/myapp
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '5.0.15' (x64)
.NET location: /usr/local/share/dotnet/

The following frameworks were found:
  6.0.2 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

O erro indica o nome, a versão e a arquitetura da estrutura ausente e o local no qual se espera que ela seja instalada. Para executar o aplicativo, você pode instalar um tempo de execução compatível no "local .NET" especificado. Se o aplicativo tiver como destino uma versão inferior à que você instalou e você quiser executá-lo em uma versão superior, você também poderá configurar o comportamento de roll-forward para o aplicativo.

Instale um runtime compatível

A mensagem de erro inclui um link para baixar a estrutura ausente. Você pode seguir este link para chegar à página de download apropriada.

Como alternativa, você pode baixar um tempo de execução da página de downloads do .NET . Existem várias transferências do ambiente de execução do .NET.

A tabela a seguir mostra as estruturas que cada tempo de execução contém.

Transferência do ambiente de execução Estruturas incluídas
Runtime do ASP.NET Core Microsoft.NETCore.App
Microsoft.AspNetCore.App
Tempo de execução do .NET Desktop Microsoft.NETCore.App
Microsoft.WindowsDesktop.App
Tempo de execução do .NET Microsoft.NETCore.App
Transferência do ambiente de execução Estruturas incluídas
ASP.NET Core Runtime Microsoft.NETCore.App
Microsoft.AspNetCore.App
Tempo de execução do .NET Microsoft.NETCore.App

Selecione uma transferência do runtime que inclua o framework em falta e, em seguida, instale-a.

Na página de download da versão .NET necessária, localize o download de tempo de execução que corresponde à arquitetura listada na mensagem de erro. Você provavelmente deseja baixar um instalador.

O .NET está disponível através de vários gerenciadores de pacotes Linux. Consulte Instalar o .NET no Linux para obter detalhes. (As versões de visualização do .NET normalmente não estão disponíveis por meio de gerenciadores de pacotes.)

Tem de instalar o pacote de runtime do .NET para a versão adequada, como dotnet-runtime-10.0 ou aspnetcore-runtime-10.0.

Como alternativa, na página de download da versão .NET necessária, você pode baixar binários para a arquitetura especificada.

Na maioria dos casos, quando a aplicação que não foi iniciada está a usar esse tipo de instalação, a "localização do .NET" na mensagem de erro aponta para:

%ProgramFiles%\dotnet

/usr/share/dotnet/

/usr/local/share/dotnet/

Verifique a variável de ambiente DOTNET_ROOT

A DOTNET_ROOT variável ambiente indica à aplicação onde encontrar o dotnet driver e os frameworks de que precisa. Se esta variável estiver mal definida, ou apontar para um local que não contenha uma instalação válida de .NET, a aplicação falha ao iniciar mesmo quando o .NET está instalado noutro local da máquina.

Problemas comuns a observar:

  • A variável aponta para uma localização erradaDOTNET_ROOT pode ser definida para um caminho de uma instalação .NET anterior, de um ambiente CI ou de um script que já não reflete a localização atual da instalação.
  • A variável está definida quando não deveria — Se DOTNET_ROOT estiver definida no ambiente, o .NET ignora completamente o local de instalação predefinido. Remova ou atualize a variável se o .NET tiver sido movido.
  • Desajuste de arquitetura — Use a variante específica da arquitetura ao executar aplicações de 32 bits numa máquina de 64 bits. Por exemplo, definir DOTNET_ROOT_X86 para apontar para a instalação de 32 bits. Para mais informações, consulte DOTNET_ROOT variável de ambiente.

Para diagnosticar, imprima o valor atual da variável e confirme que aponta para um diretório que contenha uma instalação válida de .NET:

echo $env:DOTNET_ROOT
echo $DOTNET_ROOT

Se a variável estiver definida, verifique se o caminho existe e contém a versão .NET esperada. Se a variável não estiver definida, o .NET volta ao local de instalação padrão da sua plataforma.

Verifique o local de instalação

No Windows, o .NET pesquisa apenas um local — o primeiro local onde é encontrada uma instalação .NET. Se a consulta ao framework falhar, verifique se o .NET está instalado na localização esperada.

Quando executa a aplicação através de dotnet, os frameworks são procurados em subdiretórios relativos a dotnet. Quando executa a aplicação através do seu executável (apphost), o .NET pesquisa as seguintes localizações por ordem e utiliza a primeira onde se encontra uma instalação:

  1. Subdiretórios relativos à DOTNET_ROOT variável ambiente (se definido).
  2. Local de instalação registrado globalmente (se definido) em HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\<arch>\InstallLocation.
  3. Localização de instalação padrão: %ProgramFiles%\dotnet (ou %ProgramFiles(x86)%\dotnet para processos de 32 bits no Windows de 64 bits).

Se o .NET estiver instalado numa localização não padrão, certifique-se DOTNET_ROOT de que aponta para ele para que a aplicação possa encontrar a instalação correta.

Execute o script dotnet-install

Usa o script dotnet-install quando precisares de uma instalação rápida, não administrativa, como em cenários de CI ou ambientes temporários.

O script instala .NET numa pasta que escolheres. Não se comporta como o instalador padrão do sistema operativo e cria uma instalação privada.

Para executar uma aplicação a partir dessa instalação privada, defina a DOTNET_ROOT variável de ambiente (ou a variante específica da arquitetura) quando iniciar através de um executável (conhecido como apphost), ou iniciar através do host correspondente dotnet a partir do mesmo local de instalação.

Para os passos de instalação no Windows, consulte Instalar com PowerShell.

Para os passos de instalação no Linux, veja Instalar .NET com um script.

Para os passos de instalação no macOS, veja Instalar .NET com um script.

Para opções de scripts e detalhes de comportamento, consulte a referência dos scripts dotnet-install.

Baixar binários

Você pode baixar um arquivo binário do .NET na página de download. Na coluna Binários da página de transferência do runtime, transfira a distribuição binária correspondente à arquitetura necessária. Extraia o arquivo baixado para o "local .NET" especificado na mensagem de erro.

Para obter mais informações sobre a instalação manual, consulte Instalar o .NET no Windows

Para obter mais informações sobre a instalação manual, consulte Instalar o .NET no Linux

Para obter mais informações sobre a instalação manual, consulte Instalar o .NET no macOS

Configurar o comportamento de avanço

Se você já tiver uma versão superior da estrutura necessária instalada, poderá fazer com que o aplicativo seja executado nessa versão superior configurando seu comportamento de roll-forward.

Ao executar o aplicativo, você pode especificar a opção de linha de--roll-forward comando ou definir a variável deDOTNET_ROLL_FORWARD ambiente. Por padrão, um aplicativo requer uma estrutura que corresponda à mesma versão principal que o aplicativo destina, mas pode usar uma versão secundária ou de patch superior. No entanto, os desenvolvedores de aplicativos podem ter especificado um comportamento diferente. Para obter mais informações, consulte Roll-forward de aplicações dependentes de framework.

Observação

Como o uso dessa opção permite que o aplicativo seja executado em uma versão de estrutura diferente daquela para a qual foi projetado, isso pode resultar em comportamento não intencional devido a alterações entre versões de uma estrutura.

Consulte também