Problemen met het starten van apps oplossen

In dit artikel worden enkele veelvoorkomende redenen en mogelijke oplossingen beschreven voor fouten bij het starten van toepassingen. Het heeft betrekking op frameworkafhankelijke toepassingen, die afhankelijk zijn van een .NET-installatie op uw computer.

Als u al weet welke .NET-versie u nodig hebt, kunt u deze downloaden van .NET-downloads.

.NET-installatie is niet gevonden

Als er geen .NET-installatie wordt gevonden, kan de toepassing niet worden gestart met een bericht dat vergelijkbaar is met:

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

Dit kan het gevolg zijn van een combinatie van pakketten.

Globale installaties zijn geregistreerd in /etc/dotnet/install_location. Op sommige systemen zijn architectuurspecifieke bestanden ook aanwezig, zoals /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

Globale installaties zijn geregistreerd in /etc/dotnet/install_location. Op sommige systemen zijn architectuurspecifieke bestanden ook aanwezig, zoals /etc/dotnet/install_location_arm64.

Het foutbericht bevat een koppeling om .NET te downloaden. U kunt deze koppeling volgen om naar de juiste downloadpagina te gaan. U kunt ook de .NET-versie (opgegeven door Host version) kiezen in .NET-downloads.

Zoek op de downloadpagina voor de vereiste .NET-versie de .NET Runtime-download die overeenkomt met de architectuur die wordt vermeld in het foutbericht. U kunt deze vervolgens installeren door een installatieprogramma te downloaden en uit te voeren.

.NET is beschikbaar via verschillende Linux-pakketbeheerders. Zie .NET installeren in Linux voor meer informatie. (Preview-versies van .NET zijn doorgaans niet beschikbaar via pakketbeheerders.)

U moet het .NET Runtime-pakket installeren voor de juiste versie, zoals dotnet-runtime-10.0.

U kunt ook op de downloadpagina voor de vereiste .NET-versie binaire bestanden voor de opgegeven architectuur downloaden.

Vereist framework is niet gevonden

Als een vereist framework of compatibele versie niet wordt gevonden, kan de toepassing niet worden gestart met een bericht dat vergelijkbaar is met:

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]

De fout geeft de naam, versie en architectuur van het ontbrekende framework en de locatie aan waarop het wordt verwacht te worden geïnstalleerd. Als u de toepassing wilt uitvoeren, kunt u een compatibele runtime installeren op de opgegeven .NET-locatie. Als de toepassing is gericht op een lagere versie dan een versie die u hebt geïnstalleerd en u deze wilt uitvoeren op een hogere versie, kunt u ook roll-forward-gedrag voor de toepassing configureren.

Een compatibele runtime installeren

Het foutbericht bevat een koppeling om het ontbrekende framework te downloaden. U kunt deze koppeling volgen om naar de juiste downloadpagina te gaan.

U kunt ook een runtime downloaden vanaf de .NET-downloadpagina . Er zijn meerdere downloads voor .NET Runtime.

In de volgende tabel ziet u de frameworks die elke runtime bevat.

Runtime downloaden Opgenomen frameworks
ASP.NET Core Runtime Microsoft.NETCore.App
Microsoft.AspNetCore.App
.NET Desktop Runtime Microsoft.NETCore.App
Microsoft.WindowsDesktop.App
.NET Runtime Microsoft.NETCore.App
Runtime downloaden Opgenomen frameworks
ASP.NET Core Runtime Microsoft.NETCore.App
Microsoft.AspNetCore.App
.NET Runtime Microsoft.NETCore.App

Selecteer een runtime-download die het ontbrekende framework bevat en installeer het.

Zoek op de downloadpagina voor de vereiste .NET-versie de runtimedownload die overeenkomt met de architectuur die wordt vermeld in het foutbericht. Waarschijnlijk wilt u een installatieprogramma downloaden.

.NET is beschikbaar via verschillende Linux-pakketbeheerders. Zie .NET installeren in Linux voor meer informatie. (Preview-versies van .NET zijn doorgaans niet beschikbaar via pakketbeheerders.)

U moet het .NET Runtime-pakket installeren voor de juiste versie, zoals dotnet-runtime-10.0 of aspnetcore-runtime-10.0.

U kunt ook op de downloadpagina voor de vereiste .NET-versie binaire bestanden voor de opgegeven architectuur downloaden.

In de meeste gevallen, wanneer de toepassing die niet kan worden gestart een dergelijke installatie gebruikt, verwijst de '.NET-locatie' in het foutbericht naar:

%ProgramFiles%\dotnet

/usr/share/dotnet/

/usr/local/share/dotnet/

De omgevingsvariabele DOTNET_ROOT controleren

De DOTNET_ROOT omgevingsvariabele vertelt de toepassing waar het dotnet stuurprogramma en de frameworks moeten worden gevonden. Als deze variabele onjuist is ingesteld of verwijst naar een locatie die geen geldige installatie van .NET bevat, kan de app niet worden gestart, zelfs niet wanneer .NET ergens anders op de computer is geïnstalleerd.

Veelvoorkomende problemen om op te letten:

  • Variabele verwijst naar de verkeerde locatie: DOTNET_ROOT kan worden ingesteld op een pad van een vorige .NET installatie, een CI-omgeving of een script dat niet langer overeenkomt met de huidige installatielocatie.
  • De variabele wordt ingesteld als dat niet het geval is. Als DOTNET_ROOT deze is ingesteld in de omgeving, slaat .NET de standaardinstallatielocatie volledig over. Verwijder of werk de variabele bij als .NET is verplaatst.
  • Architectuur komt niet overeen : gebruik de architectuurspecifieke variant bij het uitvoeren van 32-bits apps op een 64-bits computer. Stel bijvoorbeeld in DOTNET_ROOT_X86 dat deze verwijst naar de 32-bits installatie. Zie DOTNET_ROOT omgevingsvariabele voor meer informatie.

Als u een diagnose wilt stellen, drukt u de huidige waarde van de variabele af en bevestigt u dat deze verwijst naar een map die een geldige installatie van .NET bevat:

echo $env:DOTNET_ROOT
echo $DOTNET_ROOT

Als de variabele is ingesteld, controleert u of het pad bestaat en de verwachte .NET versie bevat. Als de variabele niet is ingesteld, valt .NET terug op de standaardinstallatielocatie voor uw platform.

De installatielocatie controleren

Op Windows doorzoekt .NET slechts één locatie: de eerste locatie waar een .NET installatie wordt gevonden. Als het opzoeken van het framework mislukt, controleert u of .NET op de verwachte locatie is geïnstalleerd.

Wanneer u de toepassing via dotnet uitvoert, worden frameworks gezocht in submappen relatief aan dotnet. Wanneer u de toepassing uitvoert via het uitvoerbare bestand (apphost), zoekt .NET de volgende locaties op volgorde en gebruikt de eerste locatie waar een installatie wordt gevonden:

  1. Submappen ten opzichte van de DOTNET_ROOT omgevingsvariabele (indien ingesteld).
  2. Globaal geregistreerde installatielocatie (indien ingesteld) in HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\<arch>\InstallLocation.
  3. Standaardinstallatielocatie: %ProgramFiles%\dotnet (of %ProgramFiles(x86)%\dotnet voor 32-bits processen op 64-bits Windows).

Als .NET is geïnstalleerd op een niet-standaardlocatie, moet DOTNET_ROOT u er naar verwijzen zodat de app de juiste installatie kan vinden.

Het dotnet-install-script uitvoeren

Gebruik het dotnet-install-script wanneer u een snelle, niet-beheerdersinstallatie nodig hebt, zoals in CI-scenario's of tijdelijke omgevingen.

Het script installeert .NET naar een map die u kiest. Het gedraagt zich niet als het standaardinstallatieprogramma voor het besturingssysteem en maakt een persoonlijke installatie.

Als u een app wilt uitvoeren vanaf die persoonlijke installatie, stelt u de DOTNET_ROOT omgevingsvariabele (of de architectuurspecifieke variant) in wanneer u start via een uitvoerbaar bestand (ook wel bekend als een apphost) of start u via de overeenkomende dotnet host vanaf dezelfde installatielocatie.

Zie Installeren met PowerShell voor installatiestappen op Windows.

Zie .NET installeren met een script voor installatiestappen in Linux.

Zie .NET installeren met een script voor installatiestappen in macOS.

Zie voor scriptopties en gedragsdetails de naslaginformatie over dotnet-install-scripts.

Binaire bestanden downloaden

U kunt een binair archief van .NET downloaden vanaf de downloadpagina. Download in de kolom Binaire bestanden van de runtimedownload de binaire versie die overeenkomt met de vereiste architectuur. Pak het gedownloade archief uit naar de .NET-locatie die is opgegeven in het foutbericht.

Zie .NET installeren in Windows voor meer informatie over handmatige installatie

Zie .NET installeren in Linux voor meer informatie over handmatige installatie

Zie .NET installeren in macOS voor meer informatie over handmatige installatie

Gedrag van roll-forward configureren

Als u al een hogere versie van het vereiste framework hebt geïnstalleerd, kunt u ervoor zorgen dat de toepassing op die hogere versie wordt uitgevoerd door het gedrag van de roll-forward te configureren.

Wanneer u de toepassing uitvoert, kunt u de --roll-forward opdrachtregeloptie opgeven of de DOTNET_ROLL_FORWARD omgevingsvariabele instellen. Voor een toepassing is standaard een framework vereist dat overeenkomt met dezelfde primaire versie als de toepassing, maar een hogere secundaire versie of patchversie kan gebruiken. Toepassingsontwikkelaars hebben echter mogelijk een ander gedrag opgegeven. Zie Framework-afhankelijke apps roll-forward voor meer informatie.

Opmerking

Omdat met deze optie de toepassing kan worden uitgevoerd op een andere frameworkversie dan de versie waarvoor deze is ontworpen, kan dit leiden tot onbedoeld gedrag als gevolg van wijzigingen tussen versies van een framework.

Zie ook