.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
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 snapd
voor 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:
- 9.0 (STS):ondersteuning eindigt mei 2026.
- 8.0 (LTS):ondersteuning eindigt op 10 november 2026.
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
Belangrijk
.NET 9 is uitgebracht op 12 november 2024. Het kan even duren voordat de pakketten worden weergegeven in de package manager-feeds of voor uw specifieke Linux-distributie om deze op te nemen.
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.
Open een terminal.
Gebruik
snap install
dit om het .NET SDK-modulepakket te installeren. Met de volgende opdracht wordt bijvoorbeeld hetlatest/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
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 |
---|---|
9 (STS) | *Nog niet beschikbaar |
8 (LTS) | 8.0/stable lts/stable |
7 (STS) | 7.0/stable (niet ondersteund) |
6 (LTS) | 6.0/stable (niet ondersteund) |
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 kan niet worden geïnstalleerd op WSL2
- Kan de dotnet-opdracht of SDK niet omzetten
- TLS/SSL-certificaatfouten
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.
Open
/etc/wsl.conf
in een teksteditor van uw keuze.Plak de volgende configuratie:
[boot] systemd=true
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:
Zorg ervoor dat u de
DOTNET_ROOT
omgevingsvariabele permanent exporteert.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 |