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

Let op

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

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

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

Vereisten

  • Linux-distributie die ondersteuning biedt voor uitlijnen.
  • snapd de snap daemon.

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

.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 gedurende 18 maanden gratis ondersteuning en patches. Zie .NET-ondersteuningsbeleid voor meer informatie.

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

  • 8.0 (LTS):ondersteuning eindigt op 10 november 2026.
  • 6.0 (LTS):ondersteuning eindigt op 12 november 2024.

Andere entiteiten die .NET bouwen en vrijgeven, kunnen verschillende ondersteuningsbeleidsregels introduceren. Neem contact met hen op om te begrijpen hoe .NET wordt ondersteund.

1. Installeer de SDK

Snap-pakketten voor de .NET SDK worden allemaal gepubliceerd onder dezelfde id: dotnet-sdk. Een specifieke versie van de SDK kan worden geïnstalleerd door het kanaal op te geven. De SDK bevat zowel de ASP.NET Core- als .NET-runtime, die naar de SDK is geversied.

Tip

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

  1. Open een terminal.

  2. Gebruik snap install dit om het .NET SDK-modulepakket te installeren. Met de volgende opdracht wordt bijvoorbeeld het latest/stable kanaal geïnstalleerd. Dit is de standaardinstelling.

    sudo snap install dotnet-sdk --classic
    
    • De --classic-parameter is vereist.
    • Gebruik de --channel parameter om op te geven welke versie moet worden geïnstalleerd. Als deze parameter wordt weggelaten, latest/stable wordt deze gebruikt. Installeert bijvoorbeeld --channel 8.0/stable .NET SDK 8.0.

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

De volgende tabel bevat de pakketkanalen die u kunt installeren:

.NET-versie Pakketkanaal uitlijnen
8 (LTS) 8.0/stable
latest/stable
lts/stable
7 7.0/stable (niet ondersteund)
6 (LTS) 6.0/stable
5 5.0/stable (niet ondersteund)
3.1 3.1/stable (niet ondersteund)
2.1 2.1/stable (niet ondersteund)

2. De installatielocatie exporteren

De DOTNET_ROOT omgevingsvariabele 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 module maakt gebruik van de volgende indeling: /snap/{package}/current.

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 toe 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 het overzicht van .NET CLI voor meer informatie over het gebruik van .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 dotnet opdracht. Als de alias niet is gemaakt of eerder is verwijderd, ziet u in de volgende opdracht hoe u de alias kunt toewijzen:

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 de dotnet-opdracht of SDK niet omzetten

Het is gebruikelijk voor andere apps, zoals een code-IDE of een extensie in Visual Studio Code, om 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 door een module geïnstalleerde .NET SDK kan deze apps verwarren. Wanneer deze apps de .NET SDK niet kunnen oplossen, wordt een fout weergegeven die vergelijkbaar is met een van de volgende berichten:

  • De SDK 'Microsoft.NET.Sdk' die is opgegeven, kan niet worden gevonden
  • De SDK 'Microsoft.NET.Sdk.Web' die is opgegeven, kan niet worden gevonden
  • De SDK 'Microsoft.NET.Sdk.Razor' die is opgegeven, kan 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 het uitvoerbare bestand uitlijnen dotnet te koppelen aan de locatie waarnaar het programma op zoek is.

    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 modulepakket te maken:

    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