Compartilhar via


Solucionar problemas de falhas de inicialização do aplicativo

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

Se você já souber qual versão do .NET precisa, poderá baixá-la dos 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

Isso pode ser devido a uma combinação de pacotes.

As instalações globais são registradas no seguinte local: /etc/dotnet/install_location. Para obter mais informações, confira locais de instalação.

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 são registradas no seguinte local: /etc/dotnet/install_location. Para obter mais informações, confira locais de instalação.

A mensagem de erro inclui um link para baixar o .NET. Você pode acessar este link para visitar a 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 Runtime do .NET que corresponde à arquitetura listada na mensagem de erro. Em seguida, instale baixando e executando o Instalador.

O .NET está disponível por meio de vários gerenciadores de pacotes do Linux. Para saber mais, confira Instalar o .NET no Linux. (As versões prévias do .NET normalmente não estão disponíveis por meio de gerenciadores de pacotes.)

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

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

Estrutura necessária não encontrada

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 runtime compatível no "local do .NET" especificado. Se o aplicativo for direcionado a uma versão inferior à que você instalou e você quiser executá-lo em uma versão mais alta, você também poderá configurar o comportamento de roll-forward do aplicativo.

Instalar um runtime compatível

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

Como alternativa, você pode baixar um runtime na página de downloads do .NET. Há vários downloads de runtime do .NET disponíveis.

A tabela a seguir mostra as estruturas que cada runtime contém.

Download do runtime Estruturas incluídas
Runtime do ASP.NET Core Microsoft.NETCore.App
Microsoft.AspNetCore.App
Runtime do .NET Desktop Microsoft.NETCore.App
Microsoft.WindowsDesktop.App
Execução do .NET Microsoft.NETCore.App
Download do runtime Estruturas incluídas
Runtime do ASP.NET Core Microsoft.NETCore.App
Microsoft.AspNetCore.App
Execução do .NET Microsoft.NETCore.App

Selecione um download de runtime que contém a estrutura ausente e instale-a.

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

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

Você precisa instalar o pacote de Runtime do .NET para a versão apropriada, como dotnet-runtime6 ou dotnet-aspnet6.

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

Na maioria dos casos, quando o aplicativo que não foi iniciado está usando essa instalação, o "local do .NET" na mensagem de erro aponta para:

%ProgramFiles%\dotnet

/usr/share/dotnet/

/usr/local/share/dotnet/

Outras opções

Há outras opções de instalação e solução alternativa a serem consideradas.

Executar o script dotnet-install

Baixe o dotnet-install script para seu sistema operacional. Execute o script com as opções baseadas nas informações da mensagem de erro. A página de referência do dotnet-install script mostra todas as opções disponíveis.

Inicie o PowerShell e execute:

dotnet-install.ps1 -Architecture <architecture> -InstallDir <directory> -Runtime <runtime> -Version <version>

Por exemplo, a mensagem de erro na seção anterior corresponderia a:

dotnet-install.ps1 -Architecture x64 -InstallDir "C:\Program Files\dotnet\" -Runtime dotnet -Version 5.0.15

Se você encontrar um erro informando que a execução de scripts está desabilitada, talvez seja necessário definir a política de execução para permitir que o script seja executado:

Set-ExecutionPolicy Bypass -Scope Process

Para obter mais informações sobre a instalação usando o script, confira Instalar com a automação do PowerShell.

./dotnet-install.sh --architecture <architecture> --install-dir <directory> --runtime <runtime> --version <version>

Por exemplo, a mensagem de erro na seção anterior corresponderia a:

./dotnet-install.sh --architecture x64 --install-dir /usr/share/dotnet/ --runtime dotnet --version 5.0.15

Para obter mais informações sobre a instalação usando o script, confira Instalação por script.

./dotnet-install.sh --architecture <architecture> --install-dir <directory> --runtime <runtime> --version <version>

Por exemplo, a mensagem de erro na seção anterior corresponderia a:

./dotnet-install.sh --architecture x64 --install-dir /usr/local/share/dotnet/ --runtime dotnet --version 5.0.15

Para obter mais informações sobre a instalação usando o script, confira Instalar com a automação do bash.

Baixar binários

Você pode baixar um arquivo binário do .NET na página de download. Na coluna Binaries do download do runtime, baixe a versão binária que corresponde à arquitetura necessária. Extraia o arquivo baixado para o "local do .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

Controlar o comportamento de roll forward

Se você já tiver uma versão mais alta 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 comando --roll-forward ou definir a variável de ambiente DOTNET_ROLL_FORWARD. Por padrão, um aplicativo requer uma estrutura que corresponda à mesma versão principal direcionada ao aplicativo, mas pode usar uma versão secundária ou de patch mais alta. No entanto, os desenvolvedores de aplicativos podem ter especificado um comportamento diferente. Para obter mais informações, confira Roll forward de aplicativos dependentes de estrutura.

Observação

Como usar essa 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 as versões de uma estrutura.

Alterações de quebra

Pesquisa de vários níveis desabilitada para .NET 7 e posterior

No Windows, antes do .NET 7, o aplicativo poderia pesquisar estruturas em vários locais de instalação.

  1. Subdiretórios relativos a:

    • Executável dotnet ao executar o aplicativo por meio de dotnet.
    • Variável de ambiente DOTNET_ROOT (se definida) ao executar o aplicativo por meio do executável (apphost).
  2. Local de instalação registrado globalmente (se definido) em HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\<arch>\InstallLocation.

  3. 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.

Para aplicativos direcionados ao .NET 7 e posteriores, a pesquisa de vários níveis está completamente desabilitada e apenas um local – o primeiro local em que uma instalação do .NET é encontrada – é pesquisado. Ao executar um aplicativo por meio de dotnet, as estruturas são pesquisadas apenas em subdiretórios relativos a dotnet. Ao executar um aplicativo por meio do executável (apphost), as estruturas são pesquisadas apenas no primeiro dos locais listados anteriormente em que o .NET é encontrado.

Para obter mais informações, confira A pesquisa em vários níveis está desabilitada.

Confira também