.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 Aan de slag voor meer informatie over Snap.

Belangrijk

Als u .NET installeert met Snap, gebruikt u Snap om al uw .NET installaties te beheren. Vermijd het combineren van Snap met andere installatiemethoden, zoals een pakketbeheerder of de installatie met scripts, omdat mengmethoden conflicten kunnen veroorzaken.

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 versies

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

Als u de .NET SDK wilt installeren, gebruikt u versiespecifieke modulepakket-id's, omdat u met deze methode meerdere SDK-versies naast elkaar kunt installeren en beheren. Gebruik bijvoorbeeld dotnet-sdk-80 voor .NET 8 en dotnet-sdk-100 voor .NET 10. De SDK bevat zowel de ASP.NET Core als .NET runtime, die is geversied naar de SDK. In dit artikel wordt het .NET 10 SDK-modulepakket gebruikt. Als u een ander pakket gebruikt, vervangt u het.

Tip

De Snapcraft .NET SDK-pakketpagina (.NET 8, .NET 9, .NET 10) 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.

    Met de volgende opdracht wordt .NET SDK 10 geïnstalleerd:

    sudo snap install dotnet-sdk-100
    

De volgende tabel bevat de .NET SDK-modulepakketten die u kunt installeren:

.NET versie Snap-pakket
10 (LTS) dotnet-sdk-100
9 (STS) dotnet-sdk-90
8 (LTS) dotnet-sdk-80

2. Wijs de opdracht dotnet toe

Omdat Snap geen versieloos dotnet-commando maakt, maakt u een symbolische koppeling om dotnet systeembreed beschikbaar te maken. Maak deze koppeling alleen als u het dotnet-commando aan deze specifieke Snap-installatie wilt koppelen. Als u al .NET hebt geïnstalleerd via een andere methode en u deze koppeling maakt, wordt die toewijzing overschreven.

Als /usr/local/bin/dotnet deze al bestaat, verwijdert u deze voordat u de koppeling maakt.

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

3. De installatielocatie exporteren

Configureer de DOTNET_ROOT omgevingsvariabele in uw shellprofiel omdat hulpprogramma's deze gebruiken om te bepalen waar .NET is geïnstalleerd. Snap-installaties stellen deze variabele niet automatisch in. Het pad gebruikt de volgende indeling: /snap/{package}/current/usr/lib/dotnet.

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

Vervang 100 door de SDK-versie die u hebt geïnstalleerd, zoals 80 voor .NET 8 of 90 voor .NET 9.

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, voeg de exportopdracht toe voor de geïnstalleerde .NET versie en sla de wijzigingen op.

Bijvoorbeeld: export DOTNET_ROOT=/snap/dotnet-sdk-100/current/usr/lib/dotnet.

4. De .NET CLI gebruiken

Open een terminal en voer de dotnet opdracht uit.

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

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. Voltooi 2. Wijs de opdracht dotnet toe.
  2. Stel de DOTNET_ROOT omgevingsvariabele permanent in door de omgevingsvariabele permanent te exporteren.

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