Dela via


Felsöka appstartfel

I den här artikeln beskrivs några vanliga orsaker och möjliga lösningar på programstartsfel. Den relaterar till ramverksberoende program som förlitar sig på en .NET-installation på datorn.

Om du redan vet vilken .NET-version du behöver kan du ladda ned den från .NET-nedladdningar.

Det går inte att hitta .NET-installationen

Om en .NET-installation inte hittas kan programmet inte startas med ett meddelande som liknar:

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

Detta kan bero på en paketförväxling.

Globala installationer registreras på följande plats: /etc/dotnet/install_location. Mer information finns i installera platser.

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

Globala installationer registreras på följande plats: /etc/dotnet/install_location. Mer information finns i installera platser.

Felmeddelandet innehåller en länk för att ladda ned .NET. Du kan följa länken för att komma till rätt nedladdningssida. Du kan också välja .NET-versionen (anges av Host version) från .NET-nedladdningar.

På nedladdningssidan för den nödvändiga .NET-versionen hittar du nedladdningen av .NET Runtime som matchar arkitekturen som anges i felmeddelandet. Du kan sedan installera det genom att ladda ned och köra ett installationsprogram.

.NET är tillgängligt via olika Linux-pakethanterare. Mer information finns i Installera .NET på Linux. (Förhandsversioner av .NET är vanligtvis inte tillgängliga via pakethanterare.)

Du måste installera .NET Runtime-paketet för rätt version, till exempel dotnet-runtime6.

Du kan också ladda ned binärfiler för den angivna arkitekturen på nedladdningssidan för den .NET-version som krävs.

Det går inte att hitta det obligatoriska ramverket

Om ett obligatoriskt ramverk eller en kompatibel version inte hittas kan programmet inte startas med ett meddelande som liknar:

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]

Felet anger namn, version och arkitektur för det saknade ramverket och den plats där det förväntas installeras. Om du vill köra programmet kan du installera en kompatibel körning på den angivna ".NET-platsen". Om programmet är avsett för en lägre version än en som du har installerat och du vill köra den på en högre version kan du även konfigurera roll-forward-beteende för programmet.

Installera en kompatibel körning

Felmeddelandet innehåller en länk för att ladda ned det saknade ramverket. Du kan följa den här länken för att komma till lämplig nedladdningssida.

Alternativt kan du ladda ned en körning från nedladdningssidan för .NET. Det finns flera .NET-körningsnedladdningar.

I följande tabell visas de ramverk som varje körning innehåller.

Körningsnedladdning Inkluderade ramverk
ASP.NET Core Runtime Microsoft.NETCore.App
Microsoft.AspNetCore.App
.NET Desktop Runtime Microsoft.NETCore.App
Microsoft.WindowsDesktop.App
.NET-körning Microsoft.NETCore.App
Körningsnedladdning Inkluderade ramverk
ASP.NET Core Runtime Microsoft.NETCore.App
Microsoft.AspNetCore.App
.NET-körning Microsoft.NETCore.App

Välj en körningsnedladdning som innehåller det saknade ramverket och installera det sedan.

På nedladdningssidan för den nödvändiga .NET-versionen hittar du den körningsnedladdning som matchar arkitekturen som anges i felmeddelandet. Du vill förmodligen ladda ned ett installationsprogram.

.NET är tillgängligt via olika Linux-pakethanterare. Mer information finns i Installera .NET på Linux . (Förhandsversioner av .NET är vanligtvis inte tillgängliga via pakethanterare.)

Du måste installera .NET-körningspaketet för rätt version, till exempel dotnet-runtime6 eller dotnet-aspnet6.

Du kan också ladda ned binärfiler för den angivna arkitekturen på nedladdningssidan för den .NET-version som krävs.

I de flesta fall, när programmet som inte kunde startas använder en sådan installation, pekar ".NET-platsen" i felmeddelandet på:

%ProgramFiles%\dotnet

/usr/share/dotnet/

/usr/local/share/dotnet/

Andra alternativ

Det finns andra installationsalternativ och lösningsalternativ att tänka på.

Kör skriptet dotnet-install

Ladda ned dotnet-install-skriptet för operativsystemet. Kör skriptet med alternativ baserat på informationen i felmeddelandet. Referenssidan för dotnet-install-skriptet visar alla tillgängliga alternativ.

Starta PowerShell och kör:

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

Felmeddelandet i föregående avsnitt motsvarar till exempel:

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

Om du får ett felmeddelande om att skript som körs är inaktiverade kan du behöva ange körningsprincipen så att skriptet kan köras:

Set-ExecutionPolicy Bypass -Scope Process

Mer information om installation med skriptet finns i Installera med PowerShell-automatisering.

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

Felmeddelandet i föregående avsnitt motsvarar till exempel:

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

Mer information om installation med skriptet finns i Skriptinstallation.

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

Felmeddelandet i föregående avsnitt motsvarar till exempel:

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

Mer information om installation med skriptet finns i Installera med bash-automatisering.

Ladda ned binärfiler

Du kan ladda ned ett binärt arkiv med .NET från nedladdningssidan. I kolumnen Binärfiler i körningsnedladdningen laddar du ned den binära versionen som matchar den arkitektur som krävs. Extrahera det nedladdade arkivet till den ".NET-plats" som anges i felmeddelandet.

Mer information om manuell installation finns i Installera .NET i Windows

Mer information om manuell installation finns i Installera .NET på Linux

Mer information om manuell installation finns i Installera .NET på macOS

Konfigurera roll-forward-beteende

Om du redan har en högre version av det nödvändiga ramverket installerat kan du göra så att programmet körs på den högre versionen genom att konfigurera dess roll-forward-beteende.

När du kör programmet kan du ange kommandoradsalternativet --roll-forward eller ange DOTNET_ROLL_FORWARD miljövariabeln. Som standard kräver ett program ett ramverk som matchar samma huvudversion som programmet riktar in sig på, men som kan använda en högre delversion eller korrigeringsversion. Programutvecklare kan dock ha angett ett annat beteende. Mer information finns i Roll-forward för ramverksberoende appar.

Kommentar

Eftersom det här alternativet gör att programmet kan köras på en annan ramverksversion än den som det har utformats för, kan det leda till oavsiktligt beteende på grund av ändringar mellan versioner av ett ramverk.

Icke-bakåtkompatibla ändringar

Sökning på flera nivåer har inaktiverats för .NET 7 och senare

I Windows, före .NET 7, kunde programmet söka efter ramverk på flera installationsplatser.

  1. Underkataloger i förhållande till:

    • dotnet körbar när programmet körs via dotnet.
    • DOTNET_ROOT miljövariabel (om den anges) när programmet körs via den körbara filen (apphost).
  2. Globalt registrerad installationsplats (om den anges) i HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\<arch>\InstallLocation.

  3. Standardinstallationsplats %ProgramFiles%\dotnet för (eller %ProgramFiles(x86)%\dotnet för 32-bitarsprocesser i 64-bitars Windows).

Det här uppslagsbeteendet på flera nivåer har aktiverats som standard men kan inaktiveras genom att ange miljövariabeln DOTNET_MULTILEVEL_LOOKUP=0.

För program som riktar sig mot .NET 7 och senare är sökning på flera nivåer helt inaktiverad och endast en plats – den första platsen där en .NET-installation hittas – genomsöks. När ett program körs via dotnetsöks ramverk endast efter i underkataloger i förhållande till dotnet. När ett program körs via dess körbara (apphost) söks ramverk endast efter på den första av de tidigare listade platserna där .NET hittas.

Mer information finns i Sökning på flera nivåer är inaktiverad.

Se även