Risolvere gli errori di avvio delle app

Questo articolo descrive alcune cause comuni e le possibili soluzioni per gli errori di avvio dell'applicazione. Si riferisce ad applicazioni dipendenti dal framework, che sono basate su un'installazione di .NET nel computer.

Se si conosce già la versione di .NET necessaria, è possibile scaricarla da Download .NET.

Installazione di .NET non trovata

Se non viene trovata un'installazione di .NET, l'applicazione non viene avviata con un messaggio simile al seguente:

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

L'errore potrebbe essere dovuto alla confusione dei pacchetti.

Le installazioni globali vengono registrate nel percorso seguente: /etc/dotnet/install_location. Per altre informazioni, vedere Percorsi di installazione.

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

Le installazioni globali vengono registrate nel percorso seguente: /etc/dotnet/install_location. Per altre informazioni, vedere Percorsi di installazione.

Il messaggio di errore include un collegamento per scaricare .NET. È possibile seguire il collegamento per accedere alla pagina di download appropriata. È anche possibile selezionare la versione di .NET (specificata da Host version) da Download .NET.

Nella pagina di download per la versione di .NET necessaria trovare il download del runtime di .NET corrispondente all'architettura elencata nel messaggio di errore. È quindi possibile installarlo scaricando ed eseguendo un programma di installazione.

.NET è disponibile tramite vari strumenti di gestione pacchetti Linux. Per altre informazioni, vedere Installare .NET in Linux. Le versioni di anteprima di .NET in genere non sono disponibili tramite gli strumenti di gestione pacchetti.

È necessario installare il pacchetto del runtime di .NET per la versione appropriata, ad esempio dotnet-runtime6.

In alternativa, nella pagina di download per la versione necessaria di .NET è possibile scaricare i file binari per l'architettura specificata.

Framework necessario non trovato

Se non è possibile trovare il framework necessario o una versione compatibile, l'applicazione non viene avviata con un messaggio simile al seguente:

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]

L'errore indica il nome, la versione e l'architettura del framework mancante e il percorso in cui è previsto che sia installato. Per eseguire l'applicazione, è possibile installare un runtime compatibile nel "percorso .NET" specificato. Se l'applicazione è destinata a una versione precedente a quella installata e si vuole eseguirla in una versione successiva, è anche possibile configurare il comportamento di roll forward per l'applicazione.

Installare un runtime compatibile

Il messaggio di errore include un collegamento per scaricare il framework mancante. È possibile seguire il collegamento per accedere alla pagina di download appropriata.

In alternativa, è possibile scaricare un runtime dalla pagina Download .NET. Sono disponibili più download per il runtime di .NET.

La tabella seguente illustra i framework contenuti in ogni runtime.

Download del runtime Framework inclusi
Runtime di ASP.NET Core Microsoft.NETCore.App
Microsoft.AspNetCore.App
Runtime di .NET Desktop Microsoft.NETCore.App
Microsoft.WindowsDesktop.App
Runtime .NET Microsoft.NETCore.App
Download del runtime Framework inclusi
Runtime di ASP.NET Core Microsoft.NETCore.App
Microsoft.AspNetCore.App
Runtime .NET Microsoft.NETCore.App

Selezionare un download del runtime contenente il framework mancante e quindi installarlo.

Nella pagina di download per la versione di .NET necessaria trovare il download corrispondente all'architettura elencata nel messaggio di errore. È probabile che si voglia scaricare un programma di installazione.

.NET è disponibile tramite vari strumenti di gestione pacchetti Linux. Per informazioni dettagliate, vedere Installare .NET in Linux. Le versioni di anteprima di .NET in genere non sono disponibili tramite gli strumenti di gestione pacchetti.

È necessario installare il pacchetto del runtime di .NET per la versione appropriata, ad esempio dotnet-runtime6 o dotnet-aspnet6.

In alternativa, nella pagina di download per la versione necessaria di .NET è possibile scaricare i file binari per l'architettura specificata.

Nella maggior parte dei casi, quando l'applicazione che non è stata avviata usa tale installazione, il "percorso .NET" nel messaggio di errore punta a:

%ProgramFiles%\dotnet

/usr/share/dotnet/

/usr/local/share/dotnet/

Altre opzioni

Sono disponibili altre opzioni di installazione e soluzioni alternative da considerare.

Eseguire lo script dotnet-install

Scaricare lo script dotnet-install per il sistema operativo in uso. Eseguire lo script con le opzioni in base alle informazioni contenute nel messaggio di errore. La pagina di riferimento per lo script dotnet-install mostra tutte le opzioni disponibili.

Avviare PowerShell ed eseguire:

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

Ad esempio, il messaggio di errore nella sezione precedente corrisponde a:

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

Se si verifica un errore che indica che l'esecuzione di script è disabilitata, potrebbe essere necessario impostare i criteri di esecuzione per consentire l'esecuzione dello script:

Set-ExecutionPolicy Bypass -Scope Process

Per altre informazioni sull'installazione tramite lo script, vedere Eseguire l'installazione con l'automazione di PowerShell.

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

Ad esempio, il messaggio di errore nella sezione precedente corrisponde a:

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

Per altre informazioni sull'installazione tramite lo script, vedere Eseguire l'installazione con l'automazione di PowerShell.

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

Ad esempio, il messaggio di errore nella sezione precedente corrisponde a:

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

Per altre informazioni sull'installazione tramite lo script, vedere Eseguire l'installazione con l'automazione di Bash.

Scaricare i file binari

È possibile scaricare un archivio di file binari di .NET dalla pagina di download. Dalla colonna Binaries del download del runtime scaricare la versione dei file binari corrispondente all'architettura prevista. Estrarre l'archivio scaricato nel "percorso .NET" specificato nel messaggio di errore.

Per altre informazioni sull'installazione manuale, vedere Installare .NET in Windows

Per altre informazioni sull'installazione manuale, vedere Installare .NET in Linux

Per altre informazioni sull'installazione manuale, vedere Installare .NET in macOS

Configurare il comportamento di roll forward

Se è già installata una versione successiva del framework necessario, è possibile eseguire l'applicazione in tale versione successiva configurandone il comportamento di roll forward.

Quando si esegue l'applicazione, è possibile specificare l'opzione della riga di comando --roll-forward o impostare la variabile di ambiente DOTNET_ROLL_FORWARD. Per impostazione predefinita, un'applicazione richiede un framework corrispondente alla stessa versione principale a cui è destinata l'applicazione, ma può usare una versione secondaria o patch più recente. Tuttavia, gli sviluppatori dell'applicazione potrebbero aver specificato un comportamento diverso. Per altre informazioni, vedere Roll forward delle app dipendenti dal framework.

Nota

Poiché l'uso di questa opzione consente l'esecuzione dell'applicazione in una versione del framework diversa da quella per cui è stata progettata, potrebbero verificarsi comportamenti imprevisti a causa delle modifiche tra le versioni di un framework.

Modifiche di rilievo

Ricerca a più livelli disabilitata per .NET 7 e versioni successive

In Windows, nelle versioni precedenti a .NET 7 l'applicazione poteva cercare i framework in più percorsi di installazione.

  1. Sottodirectory relative a:

    • Eseguibile dotnet durante l'esecuzione dell'applicazione tramite dotnet.
    • Variabile di ambiente DOTNET_ROOT (se impostata) durante l'esecuzione dell'applicazione tramite il relativo eseguibile (apphost).
  2. Percorso di installazione registrato a livello globale (se impostato) in HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\<arch>\InstallLocation.

  3. Percorso di installazione predefinito di %ProgramFiles%\dotnet (o %ProgramFiles(x86)%\dotnet per i processi a 32 bit in Windows a 64 bit).

Questo comportamento di ricerca a più livelli era abilitato per impostazione predefinita, ma poteva essere disabilitato impostando la variabile di ambiente DOTNET_MULTILEVEL_LOOKUP=0.

Per le applicazioni destinate a .NET 7 e versioni successive, la ricerca a più livelli è completamente disabilitata e la ricerca viene eseguita in un solo percorso, ovvero il primo percorso in cui viene trovata un'installazione di .NET. Quando un'applicazione viene eseguita tramite dotnet, i framework vengono cercati solo nelle sottodirectory relative a dotnet. Quando un'applicazione viene eseguita tramite il relativo eseguibile (apphost), i framework vengono cercati solo nel primo dei percorsi elencati in precedenza in cui viene trovato .NET.

Per altre informazioni, vedere Ricerca a più livelli disabilitata.

Vedi anche