Installieren .NET SDK mit Snap

In diesem Artikel wird beschrieben, wie Sie das .NET SDK-Snap-Paket installieren. .NET SDK-Snap-Pakete 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 Erste Schritte.

Wichtig

Wenn Sie .NET mit Snap installieren, verwenden Sie Snap, um alle Ihre .NET-Installationen zu verwalten. Vermeiden Sie das Mischen von Snap mit anderen Installationsmethoden, z. B. einem Paket-Manager oder der skriptierten Installation, da Mischmethoden Konflikte verursachen können.

Achtung

Snap-Installationen von .NET können Probleme mit .NET-Tools haben. Wenn Sie .NET Tools verwenden möchten, empfehlen wir, .NET mithilfe des Skripts dotnet-install script oder den Paket-Manager für die jeweilige Linux-Verteilung zu installieren.

Es ist ein bekanntes Problem, dass der Befehl dotnet watch nicht funktioniert, wenn .NET über Snap installiert wird.

Wenn Sie .NET Tools oder den Befehl dotnet watch verwenden möchten, empfiehlt es sich, .NET mithilfe des Skripts dotnet-install script zu 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 der Unterstützung. LTS-Versionen erhalten drei Jahre lang kostenlosen Support und Patches. STS-Versionen erhalten kostenlosen Support und Patches für zwei Jahre. Weitere Informationen finden Sie unter .NET Supportrichtlinie.

Die Versionen von .NET, die derzeit von Microsoft unterstützt werden, sind:

  • 10.0 (LTS) – Der Support endet am 14. November 2028.
  • 9.0 (STS) – Der Support endet am 10. November 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. Besprechen Sie unbedingt mit ihnen, wie .NET unterstützt wird.

1. Installieren des SDKs

Um das .NET SDK zu installieren, verwenden Sie versionsspezifische Snap-Paket-IDs, da Sie mit diesem Ansatz mehrere SDK-Versionen nebeneinander installieren und verwalten können. Verwenden Sie dotnet-sdk-80 beispielsweise für .NET 8 und dotnet-sdk-100 für .NET 10. Das SDK enthält sowohl die ASP.NET Core- als auch die .NET-Runtime, versioniert für das SDK. In diesem Artikel wird das .NET 10 SDK-Snappaket verwendet. Wenn Sie ein anderes Paket verwenden, ersetzen Sie es.

Tipp

Die Snapcraft .NET SDK-Paketseite (.NET 8, .NET 9, .NET 10) enthält verteilungsspezifische Anweisungen zum Installieren von Snapcraft und .NET.

  1. Öffnen Sie ein Terminal.

  2. Verwenden Sie snap install, um das .NET SDK-Snap-Paket zu installieren.

    Der folgende Befehl installiert .NET SDK 10:

    sudo snap install dotnet-sdk-100
    

In der folgenden Tabelle sind die .NET SDK-Snappakete aufgeführt, die Sie installieren können:

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

2. Zuordnen des Dotnet-Befehls

Da Snap keinen nicht geversioneten dotnet Befehl erstellt, erstellen Sie eine symbolische Verknüpfung, um systemweit verfügbar zu machen dotnet . Erstellen Sie diesen Link nur, wenn Sie den dotnet Befehl dieser spezifischen Snap-Installation zuordnen möchten. Wenn Sie .NET bereits auf andere Weise installiert haben und diesen Link anlegen, wird diese Zuordnung überschrieben.

Falls /usr/local/bin/dotnet bereits vorhanden, entfernen Sie ihn, bevor Sie den Link erstellen.

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

3. Exportieren des Installationspfads

Konfigurieren Sie die DOTNET_ROOT Umgebungsvariable in Ihrem Shellprofil, da tools sie verwenden, um zu bestimmen, wo .NET installiert ist. Snap-Installationen setzen diese Variable nicht automatisch. Der Pfad verwendet das folgende Format: /snap/{package}/current/usr/lib/dotnet.

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

Ersetzen Sie 100 durch die installierte SDK-Version, z. B. 80 für .NET 8 oder 90 für .NET 9.

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 entsprechende Quelldatei für Ihre Shell, fügen Sie den Exportbefehl für Ihre installierte .NET Version hinzu, und speichern Sie Die Änderungen.

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

4. Verwenden der .NET CLI

Öffnen Sie ein Terminal, und führen Sie den dotnet Befehl aus.

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 unter .NET CLI-Übersicht.

Problembehandlung

Auf WSL2 kann Snap nicht installiert werden

systemd muss auf der WSL2-Instanz aktiviert sein, bevor Snap installiert werden kann.

  1. Öffnen Sie /etc/wsl.conf in einem Text-Editor Ihrer Wahl.

  2. Fügen Sie die folgende Konfiguration ein:

    [boot]
    systemd=true
    
  3. 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. eine 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 kann diese Apps verwirren. Wenn diese Apps das .NET SDK nicht beheben können, wird ein Fehler angezeigt, der einer der folgenden Meldungen ähnelt:

  • Das angegebene SDK 'Microsoft.NET.Sdk' konnte nicht gefunden werden.
  • Das angegebene SDK 'Microsoft.NET.Sdk.Web' wurde nicht gefunden.
  • Das SDK 'Microsoft.NET. Sdk.Razor' angegeben konnte nicht gefunden werden

Führen Sie die folgenden Schritte aus, um das Problem zu beheben:

  1. Vervollständigen Sie 2. Ordnen Sie den dotnet-Befehl zu.
  2. Legen Sie die DOTNET_ROOT Umgebungsvariable dauerhaft fest, indem Sie die Umgebungsvariable dauerhaft exportieren.

TLS/SSL-Zertifikatfehler

Wenn .NET über Snap installiert wird, ist es möglich, dass bei einigen Verteilungen die .NET TLS/SSL-Zertifikate möglicherweise 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 Standorte der Distributionen, an denen das Problem beobachtet wurde.

Verteilung 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