Delen via


.NET SDK installeren met Snap

In dit artikel wordt beschreven hoe u het .NET SDK-modulepakket installeert. .NET SDK-modulepakketten worden geleverd door en onderhouden door Canonical. Snaps zijn een uitstekend alternatief voor pakketbeheer dat is ingebouwd in uw Linux-distributie.

Een module is een bundel van een app en de bijbehorende afhankelijkheden die in veel verschillende Linux-distributies werken. Snaps zijn detecteerbaar en installeerbaar vanuit de Snap Store. Zie Quickstart-rondleiding voor meer informatie over Snap.

Let op

Snap-installaties van .NET kunnen problemen ondervinden bij het uitvoeren van .NET-hulpprogramma's. Als u .NET hulpprogramma's wilt gebruiken, raden we u aan .NET te installeren met behulp van het script dotnet-install of pakketbeheer voor de specifieke Linux-distributie.

Het is een bekend probleem dat de opdracht dotnet watch niet werkt wanneer .NET is geïnstalleerd via Snap.

Als u .NET hulpprogramma's of de opdracht dotnet watch gaat gebruiken, raden we u aan .NET te installeren met behulp van het dotnet-install script.

Vereisten

  • Linux-distributie die snap ondersteunt.
  • snapd de snap daemon.

Uw Linux-distributie bevat mogelijk al snap. Probeer uit te voeren snap vanuit een terminal om te zien of de opdracht werkt. Voor een lijst met ondersteunde Linux-distributies en instructies voor het installeren van snap, zie Installeren snapd.

.NET releases

Microsoft publiceert .NET onder twee verschillende ondersteuningsbeleidsregels, Long Term Support (LTS) en Standard Term Support (STS). De kwaliteit van alle releases is hetzelfde. Het enige verschil is de lengte van de ondersteuning. LTS-releases krijgen drie jaar gratis ondersteuning en patches. STS-releases krijgen twee jaar gratis ondersteuning en patches. Zie .NET Ondersteuningsbeleid voor meer informatie.

De versies van .NET die momenteel door Microsoft worden ondersteund, zijn:

  • 10.0 (LTS):ondersteuning eindigt op 14 november 2028.
  • 9.0 (STS):ondersteuning eindigt op 10 november 2026.
  • 8.0 (LTS):ondersteuning eindigt op 10 november 2026.

Andere entiteiten die .NET bouwen en vrijgeven, kunnen verschillende ondersteuningsbeleidsregels introduceren. Zorg ervoor dat u contact met hen op neemt om te begrijpen hoe .NET wordt ondersteund.

1. Installeer de SDK

Belangrijk

.NET 10 werd uitgebracht op 11 november 2025. Het kan even duren voordat de pakketten zichtbaar zijn in de pakketbeheerder-feeds of voordat uw specifieke Linux-distributie deze opneemt.

Vanaf .NET 9 worden modulepakketten voor de .NET SDK gepubliceerd onder versiespecifieke id's (bijvoorbeeld dotnet-sdk-90 voor .NET 9 en dotnet-sdk-100 voor .NET 10). Vóór .NET 9 werden alle SDK-versies gepubliceerd onder dezelfde id dotnet-sdk en u hebt de versie via een kanaal opgegeven. Bovendien ondersteunen .NET 9- en hogermodulepakketten zowel x64- als Arm64-architecturen, terwijl eerdere versies alleen x64 ondersteunen. De SDK bevat zowel de ASP.NET Core als .NET runtime, die is geversied naar de SDK.

Tip

De Snapcraft .NET SDK-pakketpagina bevat distributiespecifieke instructies voor het installeren van Snapcraft en .NET.

  1. Open een terminal.

  2. Gebruik snap install om het .NET SDK-modulepakket te installeren.

    De parameter --classic is vereist.

    • Voor .NET 9 en hoger

      Installeer het versiespecifieke pakket. Met de volgende opdracht wordt bijvoorbeeld .NET SDK 10 geïnstalleerd:

      sudo snap install dotnet-sdk-100 --classic
      
    • Voor .NET 8 en eerder

      Installeer vanuit het dotnet-sdk pakket en geef een kanaal op. Als deze parameter wordt weggelaten, latest/stable wordt deze gebruikt. Met de volgende opdracht wordt bijvoorbeeld .NET SDK 8 geïnstalleerd:

      sudo snap install dotnet-sdk --classic --channel 8.0/stable
      

De dotnet snap-alias wordt automatisch gemaakt en toegewezen aan de opdracht van het dotnet snap-pakket.

De volgende tabel bevat de snap-pakketten en kanalen die u kunt installeren:

.NET versie Pakket of kanaal uitlijnen
10 (LTS) dotnet-sdk-100 (voorbeeld)
9 (STS) dotnet-sdk-90
8 (LTS) dotnet-sdk --channel 8.0/stable
7 dotnet-sdk --channel 7.0/stable (niet ondersteund)
6 dotnet-sdk --channel 6.0/stable (niet ondersteund)
5 dotnet-sdk --channel 5.0/stable (niet ondersteund)
3.1 dotnet-sdk --channel 3.1/stable (niet ondersteund)
2.1 dotnet-sdk --channel 2.1/stable (niet ondersteund)

2. De installatielocatie exporteren

De omgevingsvariabele DOTNET_ROOT wordt vaak gebruikt door hulpprogramma's om te bepalen waar .NET is geïnstalleerd. Wanneer .NET is geïnstalleerd via Snap, is deze omgevingsvariabele niet geconfigureerd. U moet de DOTNET_ROOT omgevingsvariabele in uw profiel configureren. Het pad naar de snap gebruikt het volgende formaat: /snap/{package}/current.

Gebruik voor .NET 9 en hoger de versiespecifieke pakketnaam:

export DOTNET_ROOT=/snap/dotnet-sdk-100/current

Gebruik voor .NET 8 en eerder de naam van het gedeelde pakket:

export DOTNET_ROOT=/snap/dotnet-sdk/current

De omgevingsvariabele permanent exporteren

Met de voorgaande opdracht wordt alleen de omgevingsvariabele export ingesteld voor de terminalsessie waarin deze is uitgevoerd.

U kunt uw shell-profiel bewerken om de opdrachten permanent toe te voegen. Er zijn veel verschillende shells beschikbaar voor Linux en elk heeft een ander profiel. Voorbeeld:

  • Bash Shell: ~/.bash_profile, ~/.bashrc
  • Korn Shell: ~/.kshrc of .profile
  • Z Shell: _~/.zshrc* of .zprofile

Bewerk het juiste bronbestand voor uw shell en voeg de exportopdracht toe voor de geïnstalleerde .NET versie. Gebruik voor .NET 9+ export DOTNET_ROOT=/snap/dotnet-sdk-100/current (pas het versienummer indien nodig aan). Gebruik voor .NET 8 en eerder export DOTNET_ROOT=/snap/dotnet-sdk/current.

3. De .NET CLI gebruiken

Open een terminal en typ dotnet.

dotnet

De volgende uitvoer wordt weergegeven:

Usage: dotnet [options]
Usage: dotnet [path-to-application]

Options:
  -h|--help         Display help.
  --info            Display .NET information.
  --list-sdks       Display the installed SDKs.
  --list-runtimes   Display the installed runtimes.

path-to-application:
  The path to an application .dll file to execute.

Zie .NET CLI-overzicht voor meer informatie over het gebruik van de .NET CLI.

Probleemoplossing

De opdracht dotnet terminal werkt niet

Snap-pakketten kunnen een alias toewijzen aan een opdracht die door het pakket wordt geleverd. Standaard maken de .NET SDK-modulepakketten een alias voor de opdracht dotnet. Als de alias niet is aangemaakt of eerder is verwijderd, gebruikt u de volgende commando om de alias toe te wijzen.

Voor .NET 9 en hoger:

sudo snap alias dotnet-sdk-100.dotnet dotnet

Voor .NET 8 en eerder:

sudo snap alias dotnet-sdk.dotnet dotnet

Snap kan niet worden geïnstalleerd op WSL2

systemd moet zijn ingeschakeld op het WSL2-exemplaar voordat Snap kan worden geïnstalleerd.

  1. Open /etc/wsl.conf in een teksteditor van uw keuze.

  2. Plak de volgende configuratie:

    [boot]
    systemd=true
    
  3. Sla het bestand op en start het WSL2-exemplaar opnieuw via PowerShell. Gebruik de opdracht wsl.exe --shutdown.

Kan het dotnet-commando of SDK niet oplossen

Het is gebruikelijk dat andere apps, zoals een code-IDE of een extensie in Visual Studio Code, proberen de locatie van de .NET SDK op te lossen. Normaal gesproken wordt detectie uitgevoerd door de DOTNET_ROOT omgevingsvariabele te controleren of uit te zoeken waar het dotnet uitvoerbare bestand zich bevindt. Een via Snap geïnstalleerde .NET SDK kan deze apps verwarren. Wanneer deze apps de .NET SDK niet kunnen oplossen, wordt er een fout weergegeven die lijkt op een van de volgende berichten:

  • De opgegeven SDK 'Microsoft.NET.Sdk' kan niet worden gevonden
  • De opgegeven SDK 'Microsoft.NET.Sdk.Web' kon niet worden gevonden.
  • De gespecificeerde SDK 'Microsoft.NET.Sdk.Razor' kon niet worden gevonden.

Voer de volgende stappen uit om het probleem op te lossen:

  1. Zorg ervoor dat u de DOTNET_ROOT omgevingsvariabele permanent exporteert.

  2. Probeer een symbolische link te maken van de snap-uitvoerbare dotnet naar de locatie waar het programma naar zoekt.

    Twee veelgebruikte paden die de dotnet opdracht zoekt zijn:

    • /usr/local/bin/dotnet
    • /usr/share/dotnet

    Gebruik de volgende opdracht om een symbolische koppeling naar het snap-pakket te maken. Gebruik voor .NET 9 en hoger de versiespecifieke pakketnaam:

    ln -s /snap/dotnet-sdk-100/current/dotnet /usr/local/bin/dotnet
    

    Voor .NET 8 en eerder:

    ln -s /snap/dotnet-sdk/current/dotnet /usr/local/bin/dotnet
    

TLS/SSL-certificaatfouten

Wanneer .NET is geïnstalleerd via Snap, is het mogelijk dat op sommige distributies de .NET TLS/SSL-certificaten mogelijk niet worden gevonden en er mogelijk een fout optreedt tijdens restore:

Processing post-creation actions...
Running 'dotnet restore' on /home/myhome/test/test.csproj...
  Restoring packages for /home/myhome/test/test.csproj...
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error :   The SSL connection could not be established, see inner exception. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error :   The remote certificate is invalid according to the validation procedure. [/home/myhome/test/test.csproj]

U kunt dit probleem oplossen door enkele omgevingsvariabelen in te stellen:

export SSL_CERT_FILE=[path-to-certificate-file]
export SSL_CERT_DIR=/dev/null

De locatie van het certificaat verschilt per distributie. Dit zijn de locaties voor de distributies waar het probleem is waargenomen:

Distributie Locatie
Fedora /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
OpenSUSE /etc/ssl/ca-bundle.pem
Solus /etc/ssl/certs/ca-certificates.crt