Installieren von .NET SDK mit Snap
In diesem Artikel wird beschrieben, wie Sie das Snap-Paket für .NET SDK installieren. Snap-Pakete für .NET SDK werden von Canonical bereitgestellt und verwaltet. Snaps stellen eine gute Alternative zum in Ihre Linux-Distribution integrierten Paket-Manager dar.
Ein Snap ist ein Bündel aus einer App und ihren Abhängigkeiten, das in vielen verschiedenen Linux-Distributionen funktioniert. Snaps sind über den Snap Store abrufbar und installierbar. Weitere Informationen zu Snap finden Sie unter Schnellstart-Tour.
Achtung
Bei Snap-Installationen von .NET können Probleme beim Ausführen von .NET-Tools auftreten. Wenn Sie .NET-Tools verwenden möchten, sollten Sie .NET mit dem dotnet-install
-Skript oder dem Paket-Manager für die jeweilige Linux-Distribution installieren.
Es ist ein bekanntes Problem, dass der dotnet watch
-Befehl nicht funktioniert, wenn .NET über Snap installiert wird.
Wenn Sie .NET-Tools oder den dotnet watch
-Befehl verwenden möchten, sollten Sie .NET mithilfe des dotnet-install
-Skripts installieren.
Voraussetzungen
- Linux-Distribution, die Snap unterstützt.
snapd
der Snap-Daemon.
Ihre Linux-Distribution enthält möglicherweise bereits Snap. Versuchen Sie, snap
von einem Terminal aus auszuführen, um festzustellen, ob der Befehl funktioniert. Eine Liste der unterstützten Linux-Distributionen und Anweisungen zum Installieren von Snap finden Sie unter Installierensnapd
.
.NET-Releases
Microsoft veröffentlicht .NET unter zwei verschiedenen Supportrichtlinien, Long Term Support (LTS) und Standard Term Support (STS). Die Qualität aller Releases ist gleich. Der einzige Unterschied ist die Dauer des Supports. LTS-Versionen erhalten drei Jahre lang kostenlosen Support und Patches. STS-Releases erhalten für 18 Monate kostenlosen Support und Patches. Weitere Informationen finden Sie in der .NET-Supportrichtlinie.
Die Versionen von .NET, die derzeit von Microsoft unterstützt werden, sind:
- 9.0 (STS) – Der Support endet mai 2026.
- 8.0 (LTS) – Der Support endet am 10. November 2026.
Andere Entitäten, die .NET erstellen und freigeben, können unterschiedliche Supportrichtlinien einführen. Stellen Sie sicher, dass Sie sich mit ihnen vertraut machen, um zu verstehen, wie .NET unterstützt wird.
1. Installieren des SDKs
Wichtig
.NET 9 wurde am 12. November 2024 veröffentlicht. Es kann Zeit dauern, bis die Pakete in den Paket-Manager-Feeds oder für Ihre spezifische Linux-Verteilung angezeigt werden, um sie einzuschließen.
Snap-Pakete für das .NET SDK werden alle unter demselben Bezeichner veröffentlicht: dotnet-sdk
. Eine bestimmte Version des SDK kann durch Angabe des Kanals installiert werden. Das SDK enthält sowohl die ASP.NET Core- als auch die .NET-Runtime, versioniert für das SDK.
Tipp
Die Snapcraft .NET SDK-Paketseite enthält distributionsspezifische Anweisungen zum Installieren von Snapcraft und .NET.
Öffnen Sie ein Terminal.
Verwenden Sie
snap install
zum Installieren des Snap-Pakets für.NET SDK. Der folgende Befehl installiert z. B. denlatest/stable
-Kanal, der der Standard ist.sudo snap install dotnet-sdk --classic
- Der
--classic
-Parameter ist erforderlich. - Geben Sie mit dem
--channel
-Parameter an, welche Version installiert werden soll. Bei Weglassen dieses Parameters wirdlatest/stable
verwendet. Beispielsweise installiert--channel 8.0/stable
das .NET SDK 8.0.
- Der
Der Snap-Alias „dotnet
“ wird automatisch erstellt und dem dotnet
-Befehl des Snap-Pakets zugeordnet.
In der folgenden Tabelle sind die Paketkanäle aufgeführt, die Sie installieren können:
.NET-Version | Snap-Paketkanal |
---|---|
9 (STS) | *Noch nicht verfügbar |
8 (LTS) | 8.0/stable lts/stable |
7 (STS) | 7.0/stable (nicht unterstützt) |
6 (LTS) | 6.0/stable (nicht unterstützt) |
5 | 5.0/stable (nicht unterstützt) |
3.1 | 3.1/stable (nicht unterstützt) |
2.1 | 2.1/stable (nicht unterstützt) |
2. Exportieren des Installationspfads
Die DOTNET_ROOT
-Umgebungsvariable wird häufig von Tools verwendet, um zu ermitteln, wo .NET installiert ist. Wenn .NET über Snap installiert wird, ist diese Umgebungsvariable nicht konfiguriert. Sie sollten die Umgebungsvariable DOTNET_ROOT in Ihrem Profil konfigurieren. Der Pfad zu Snap verwendet das folgende Format: /snap/{package}/current
.
export DOTNET_ROOT=/snap/dotnet-sdk/current
Dauerhaftes Exportieren der Umgebungsvariable
Der oben aufgeführte Befehl export
legt nur die Umgebungsvariable für die Terminalsitzung fest, in der er ausgeführt wurde.
Sie können Ihr Shell-Profil bearbeiten, um diese Befehle dauerhaft hinzuzufügen. Für Linux sind viele verschiedene Shells verfügbar, die jeweils über ein unterschiedliche Profile verfügen. Zum Beispiel:
- Bash-Shell: ~/.bash_profile, ~/.bashrc
- Korn-Shell: ~/.kshrc oder .profile
- Z Shell: _~/.zshrc* oder .zprofile
Bearbeiten Sie die geeignete Quelldatei für Ihre Shell, und fügen Sie export DOTNET_ROOT=/snap/dotnet-sdk/current
hinzu.
3. Verwenden der .NET CLI
Öffnen Sie ein Terminal und geben Sie dotnet
ein.
dotnet
Die folgende Ausgabe wird angezeigt:
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.
Informationen zur Verwendung der .NET CLI finden Sie in der .NET CLI-Übersicht.
Problembehandlung
- Der Dotnet-Terminalbefehl funktioniert nicht
- Snap auf WSL2 kann nicht installiert werden
- Der Dotnet-Befehl oder das SDK kann nicht aufgelöst werden
- TLS/SSL-Zertifikatfehler
Der Dotnet-Terminalbefehl funktioniert nicht.
Snap-Pakete können einem Befehl einen Alias zuordnen, der vom Paket bereitgestellt wird. Standardmäßig erstellen die Snap-Pakete für .NET SDK einen Alias für den dotnet
-Befehl. Wenn der Alias nicht erstellt oder zuvor entfernt wurde, zeigt der folgende Befehl, wie der Alias zugeordnet wird:
sudo snap alias dotnet-sdk.dotnet dotnet
Snap auf WSL2 kann nicht installiert werden
systemd
muss auf der WSL2-Instanz aktiviert sein, bevor Snap installiert werden kann.
Öffnen Sie
/etc/wsl.conf
in einem Text-Editor Ihrer Wahl.Fügen Sie die folgende Konfiguration ein:
[boot] systemd=true
Speichern Sie die Datei, und starten Sie die WSL2-Instanz über PowerShell neu. Verwenden Sie den Befehl
wsl.exe --shutdown
.
Der Dotnet-Befehl oder das SDK kann nicht aufgelöst werden.
Es ist üblich, dass andere Apps (z. B. Code IDE oder eine Erweiterung in Visual Studio Code) versuchen, den Speicherort des .NET SDK aufzulösen. Die Ermittlung erfolgt in der Regel durch Überprüfen der Umgebungsvariablen „DOTNET_ROOT
“ oder durch das Herausfinden des Speicherorts der ausführbaren Datei „dotnet
“. Ein Snap-installiertes .NET SDK könnte diese Apps verwirren. Wenn diese Apps das .NET SDK nicht auflösen können, wird ein Fehler angezeigt, der eine der folgenden Meldungen ähnelt:
- The SDK 'Microsoft.NET.Sdk' specified could not be found (Das angegebene SDK „Microsoft.NET.Sdk“ wurde nicht gefunden)
- The SDK 'Microsoft.NET.Sdk.Web' specified could not be found (Das angegebene SDK „Microsoft.NET.Sdk.Web“ wurde nicht gefunden)
- The SDK 'Microsoft.NET.Sdk.Razor' specified could not be found (Das angegebene SDK „Microsoft.NET.Sdk.Razor“ wurde nicht gefunden)
Führen Sie die folgenden Schritte aus, um das Problem zu beheben:
Stellen Sie sicher, dass Sie die
DOTNET_ROOT
-Umgebungsvariable dauerhaft exportieren.Versuchen Sie, die ausführbare
dotnet
-Snap-Datei symbolisch mit dem Speicherort, den das Programm sucht, zu verknüpfen.Zwei gängige Pfade, nach denen der Befehl
dotnet
sucht:/usr/local/bin/dotnet
/usr/share/dotnet
Verwenden Sie den folgenden Befehl, um eine symbolische Verknüpfung mit dem Snap-Paket zu erstellen:
ln -s /snap/dotnet-sdk/current/dotnet /usr/local/bin/dotnet
TLS/SSL-Zertifikatfehler
Wenn .NET über Snap installiert wird, ist es möglich, dass bei einigen Distributionen die TLS/SSL-Zertifikate für .NET nicht gefunden werden und während restore
eine Fehlermeldung angezeigt wird:
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]
Zum Lösen dieses Problems müssen Sie einige Umgebungsvariablen festlegen:
export SSL_CERT_FILE=[path-to-certificate-file]
export SSL_CERT_DIR=/dev/null
Der Speicherort des Zertifikats variiert je nach Distribution. Hier sind die Speicherorte für die Distributionen, auf denen das Problem beobachtet wurde:
Distribution | Standort |
---|---|
Fedora | /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem |
OpenSUSE | /etc/ssl/ca-bundle.pem |
Solus | /etc/ssl/certs/ca-certificates.crt |