Felsök problem när appen startar

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 i /etc/dotnet/install_location. I vissa system finns även arkitekturspecifika filer, till exempel /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

Globala installationer registreras i /etc/dotnet/install_location. I vissa system finns även arkitekturspecifika filer, till exempel /etc/dotnet/install_location_arm64.

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.

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-runtime-10.0.

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örmiljö

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örningsmiljö från sidan .NET-nedladdningar. Det finns flera nedladdningar av .NET Runtime.

Följande tabell visar de ramverk som varje körningsmiljö innehåller.

Nedladdning av Runtime Inkluderade ramverk
ASP.NET Core Runtime Microsoft.NETCore.App
Microsoft.AspNetCore.App
.NET-skrivbordskörmiljö Microsoft.NETCore.App
Microsoft.WindowsDesktop.App
.NET-körmiljö Microsoft.NETCore.App
Nedladdning av körningsmiljö Inkluderade ramverk
ASP.NET Core Runtime Microsoft.NETCore.App
Microsoft.AspNetCore.App
.NET-körmiljö Microsoft.NETCore.App

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

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-runtime-10.0 eller aspnetcore-runtime-10.0.

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/

Kontrollera miljövariabeln DOTNET_ROOT

Miljövariabeln DOTNET_ROOT talar om för programmet var drivrutinen dotnet och ramverken ska hittas. Om den här variabeln har angetts felaktigt eller pekar på en plats som inte innehåller en giltig .NET installation, startas inte appen även när .NET installeras någon annanstans på datorn.

Vanliga problem att leta efter:

  • Variabel pekar på fel platsDOTNET_ROOT kan anges till en sökväg från en tidigare .NET installation, en CI-miljö eller ett skript som inte längre återspeglar den aktuella installationsplatsen.
  • Variabeln anges när den inte ska vara – Om DOTNET_ROOT anges i miljön hoppar .NET över standardinstallationsplatsen helt. Ta bort eller uppdatera variabeln om .NET har flyttats.
  • Arkitekturmatchningsfel – Använd den arkitekturspecifika varianten när du kör 32-bitarsappar på en 64-bitars dator. Ange till exempel DOTNET_ROOT_X86 att peka på 32-bitarsinstallationen. Mer information finns i DOTNET_ROOT miljövariabeln.

Om du vill diagnostisera skriver du ut variabelns aktuella värde och bekräftar att det pekar på en katalog som innehåller en giltig .NET installation:

echo $env:DOTNET_ROOT
echo $DOTNET_ROOT

Om variabeln har angetts kontrollerar du att sökvägen finns och innehåller den förväntade .NET versionen. Om variabeln inte har angetts återgår .NET till standardinstallationsplatsen för din plattform.

Kontrollera installationsplatsen

På Windows söker .NET bara på en plats – den första platsen där en .NET installation hittas. Om ramverkssökningen misslyckas kontrollerar du att .NET är installerat på den förväntade platsen.

När du kör programmet via dotnetsöks ramverk efter i underkataloger i förhållande till dotnet. När du kör programmet via dess körbara (apphost) söker .NET efter följande platser i ordning och använder den första där en installation hittas:

  1. Underkataloger relativt till DOTNET_ROOT-miljövariabeln (om den är angiven).
  2. Globalt registrerad installationsplats (om den anges) i HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\<arch>\InstallLocation.
  3. Standardinstallationsplats: %ProgramFiles%\dotnet (eller %ProgramFiles(x86)%\dotnet för 32-bitarsprocesser på 64-bitars Windows).

Om .NET är installerat på en annan plats än standardplatsen, kontrollera att DOTNET_ROOT pekar på den platsen så att appen kan hitta rätt installation.

Kör skriptet dotnet-install

Använd dotnet-install-skriptet när du behöver en snabb installation utan administratörsbehörighet, till exempel i CI-scenarier eller tillfälliga miljöer.

Skriptet installerar .NET till en mapp som du väljer. Den fungerar inte som standardinstallationsprogrammet för operativsystemet och skapar en privat installation.

För att köra en app från den privata installationen anger du miljövariabeln DOTNET_ROOT (eller den arkitekturspecifika varianten) när du startar via en körbar fil (kallas för en apphost), eller startar via den matchande dotnet-värden från samma installationsplats.

Installationssteg för Windows finns i Installera med PowerShell.

Installationssteg i Linux finns i Installera .NET med ett skript.

Installationssteg för macOS finns i Installera .NET med ett skript.

Mer information om skriptalternativ och beteende finns i referensen för dotnet-install-skript.

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 vidarebefordransbeteende

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.

Anmärkning

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.

Se även