Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge aus, um die neuesten Funktionen, Sicherheitsupdates und technischen Support zu nutzen.
Wenn Sie versuchen, .NET unter Linux zu verwenden, können Befehle wie dotnet new
und dotnet run
mit einer Meldung fehlschlagen, dass etwas nicht gefunden wurde, wie z. B. fxr, libhostfxr.so oder FrameworkList.xml. Einige der Fehlermeldungen können in etwa wie folgt lauten:
System.IO.FileNotFoundException
System.IO.FileNotFoundException: Datei „/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml“ nicht gefunden.
Schwerwiegender Fehler
Schwerwiegender Fehler. Die erforderliche Bibliothek libhostfxr.so wurde nicht gefunden.
oder
Schwerwiegender Fehler. Der Ordner [/usr/share/dotnet/host/fxr] ist nicht vorhanden.
oder
Schwerwiegender Fehler: Der Ordner [/usr/share/dotnet/host/fxr] enthält keine untergeordneten Ordner mit Versionsnummer.
Generische Meldungen zu dotnetNicht gefunden
Möglicherweise wird eine allgemeine Meldung angezeigt, die angibt, dass das SDK nicht gefunden wurde, oder dass das Paket bereits installiert wurde.
Ein Symptom dieser Probleme ist, dass sich sowohl der Ordner /usr/lib64/dotnet
als auch /usr/share/dotnet
auf Ihrem System befindet.
Tipp
Verwenden Sie den Befehl dotnet --info
, um aufzulisten, welche SDKs und Runtimes installiert sind. Weitere Informationen finden Sie unter Überprüfen, ob .NET Core bereits installiert ist.
Wichtig
Ab .NET 9 veröffentlicht Microsoft nur Pakete für unterstützte Linux-Distributionen, die keine eigenen Pakete veröffentlichen. Weitere Informationen finden Sie unter Installieren von .NET unter Linux.
Diese Fehler treten in der Regel auf, wenn zwei Linux-Paketrepositorys .NET-Pakete bereitstellen. Microsoft stellt ein Linux-Paketrepository für .NET-Quellpakete bereit, aber auch einige Linux-Distributionen stellen .NET-Pakete bereit. Zu diesen Distributionen gehören:
Wenn Sie .NET-Pakete aus zwei verschiedenen Quellen kombinieren, treten wahrscheinlich Probleme auf. Die Pakete können Komponenten unter verschiedenen Pfaden platzieren und möglicherweise unterschiedlich kompiliert werden.
Die Lösung für diese Probleme besteht darin, .NET aus einem Paketrepository zu verwenden. Welches Repository Sie auswählen und wie sie das durchführen, hängt vom Anwendungsfall und von der Linux-Distribution ab.
Verwenden Sie das Microsoft Repository für andere Pakete, wie PowerShell und MSSQL?
Ja
Konfigurieren Sie Ihren Paket-Manager so, dass er die .NET-Pakete aus dem Microsoft-Repository ignoriert. Es ist möglich, dass Sie .NET aus beiden Repositorys installiert haben, sodass Sie das eine oder das andere wählen sollten.
Entfernen Sie die vorhandenen .NET-Pakete aus Ihrer Distribution. Sie möchten neu beginnen und sicherstellen, dass Sie sie nicht aus dem falschen Repository installieren.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'
Konfigurieren Sie das Microsoft-Repository so, dass .NET-Pakete ignoriert werden.
echo 'excludepkgs=dotnet*,aspnet*,netstandard*' | sudo tee -a /etc/yum.repos.d/microsoft-prod.repo
Installieren Sie .NET aus dem Paketfeed der Distribution erneut. Weitere Informationen finden Sie unter Installieren von .NET unter Linux.
Nein
Entfernen Sie die vorhandenen .NET-Pakete aus Ihrer Distribution. Sie möchten neu beginnen und sicherstellen, dass Sie sie nicht aus dem falschen Repository installieren.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'
Löschen Sie den Microsoft-Repositoryfeed aus Ihrer Distribution.
sudo dnf remove packages-microsoft-prod
Installieren Sie .NET aus dem Paketfeed der Distribution erneut. Weitere Informationen finden Sie unter Installieren von .NET unter Linux.
Verwenden Sie das Microsoft Repository für andere Pakete, wie PowerShell und MSSQL?
Ja
Konfigurieren Sie Ihren Paket-Manager so, dass er die .NET-Pakete aus dem Microsoft-Repository ignoriert. Es ist möglich, dass Sie .NET aus beiden Repositorys installiert haben, sodass Sie das eine oder das andere wählen sollten.
Entfernen Sie die vorhandenen .NET-Pakete aus Ihrer Distribution. Sie möchten neu beginnen und sicherstellen, dass Sie sie nicht aus dem falschen Repository installieren.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'
Erstellen Sie /etc/apt/preferences
, falls noch nicht vorhanden.
touch /etc/apt/preferences
Öffnen Sie /etc/apt/preferences
in einem Editor und legen Sie die folgenden Einstellungen fest, die verhindern, dass Pakete, die mit dotnet
, aspnetcore
oder netstandard
beginnen, aus dem Microsoft-Repository bezogen werden:
Package: dotnet* aspnet* netstandard*
Pin: origin "packages.microsoft.com"
Pin-Priority: -10
Installieren Sie .NET aus dem Paketfeed der Distribution erneut. Weitere Informationen finden Sie unter Installieren von .NET unter Linux.
Nein
Entfernen Sie die vorhandenen .NET-Pakete aus Ihrer Distribution. Sie möchten neu beginnen und sicherstellen, dass Sie sie nicht aus dem falschen Repository installieren.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'
Löschen Sie den Microsoft-Repositoryfeed aus Ihrer Distribution.
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo apt update
Installieren Sie .NET aus dem Paketfeed der Distribution erneut. Weitere Informationen finden Sie unter Installieren von .NET unter Linux.
Konfigurieren Sie Ihren Paket-Manager so, dass er die .NET-Pakete aus dem Repository der Distribution ignoriert. Es ist möglich, dass Sie .NET aus beiden Repositorys installiert haben, sodass Sie das eine oder das andere wählen sollten.
Entfernen Sie die vorhandenen .NET-Pakete aus Ihrer Distribution. Sie möchten neu beginnen und sicherstellen, dass Sie sie nicht aus dem falschen Repository installieren.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'
Konfigurieren Sie das Linux-Repository so, dass .NET-Pakete ignoriert werden.
echo 'excludepkgs=dotnet*,aspnet*,netstandard*' | sudo tee -a /etc/yum.repos.d/<your-package-source>.repo
Stellen Sie sicher, dass Sie <your-package-source>
durch die Paketquelle Ihrer Distribution ersetzen.
Installieren Sie .NET aus dem Paketfeed der Distribution erneut. Weitere Informationen finden Sie unter Installieren von .NET unter Linux.
Konfigurieren Sie Ihren Paket-Manager so, dass er die .NET-Pakete aus dem Repository der Distribution ignoriert. Es ist möglich, dass Sie .NET aus beiden Repositorys installiert haben, sodass Sie das eine oder das andere wählen sollten.
Entfernen Sie die vorhandenen .NET-Pakete aus Ihrer Distribution. Sie möchten neu beginnen und sicherstellen, dass Sie sie nicht aus dem falschen Repository installieren.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'
Erstellen Sie /etc/apt/preferences
, falls noch nicht vorhanden.
touch /etc/apt/preferences
Öffnen Sie /etc/apt/preferences
in einem Editor, und fügen Sie ein passendes Einstellungsfragment hinzu, um zu verhindern, dass Pakete, die mit dotnet
dem aspnetcore
Repository der Verteilung beginnen, oder netstandard
aus dem Repository der Verteilung stammen.
Package: dotnet* aspnet* netstandard*
Pin: origin "<your-package-source>"
Pin-Priority: -10
Stellen Sie sicher, dass Sie <your-package-source>
durch die Paketquelle Ihrer Distribution ersetzen.
Ihre Verteilung verfügt möglicherweise über mehrere Paketquellen.
Beispielsweise müssen Sie auf Ubuntu in den USA möglicherweise ein Fragment für archive.ubuntu.com
und ein anderes für security.ubuntu.com
verwenden. Trennen Sie die Fragmente durch eine leere Zeile wie folgt:
Package: dotnet* aspnet* netstandard*
Pin: origin "archive.ubuntu.com"
Pin-Priority: -10
Package: dotnet* aspnet* netstandard*
Pin: origin "security.ubuntu.com"
Pin-Priority: -10
Tipp
Verwenden Sie den Befehl apt-cache policy
, um die Quelle zu ermitteln:
apt-cache policy '?name(dotnet.*)' | grep -v microsoft | grep '/ubuntu' | cut -d"/" -f3 | sort -u
Tipp
Wenn Sie das Repository mit dem Ubuntu .NET Backports-Paket registriert haben, sollten Sie die Registrierung des Repositorys mit dem Ubuntu .NET-Backports-Paket aufheben, anstatt den Paket-Manager so zu konfigurieren, dass die enthaltenen .NET-Pakete ignoriert werden. Andernfalls ruft der Paket-Manager den Paketindex aus diesem Repository ab, nur um ihn zu ignorieren, da das Repository nur .NET-Pakete enthält. Dadurch wird das Aktualisieren des lokalen Paketindex bei jedem Aufruf von apt update
verlangsamt.
Verwenden Sie den Befehl apt-cache policy
, um zu überprüfen, ob das Repository mit dem Ubuntu .NET Backports-Paket registriert ist:
apt-cache policy '?name(dotnet.*)' | grep 'ppa.launchpadcontent.net/dotnet/backports' | sort -u
Installieren Sie .NET aus dem Microsoft-Paketfeed neu. Weitere Informationen finden Sie unter Installieren von .NET unter Linux. Wenn Sie Ubuntu verwenden, finden Sie weitere Informationen unter Meine Ubuntu-Distribution enthält nicht die gewünschte .NET-Version oder ich benötige eine nicht mehr unterstützte .NET-Version.
Viele andere Benutzer haben über diese Probleme berichtet. Es folgt eine Liste der bekannten Probleme. Sie können sie durchlesen und so erfahren, was die Ursache Ihres Problems sein könnte:
System.IO.FileNotFoundException und „/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml“
Schwerwiegender Fehler: libhostfxr.so nicht gefunden
Schwerwiegender Fehler: Der Ordner /host/fxr ist nicht vorhanden.
Schwerwiegender Fehler: Der Ordner /host/fxr enthält keine untergeordneten Ordner mit Versionsnummer.
Generische Fehler ohne eindeutige Meldungen
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenSchulung
Modul
Erstellen eines neuen .NET-Projekts und Arbeiten mit Paketabhängigkeiten - Training
Hier erstellen Sie ein .NET-Projekt und erfahren, wie Sie in Ihrem Projekt Pakete hinzufügen und Paketabhängigkeiten verwalten. Verwenden Sie die .NET Core-CLI und die NuGet-Registrierung, um Ihren C#-Anwendungen über Visual Studio Code Bibliotheken und Tools hinzuzufügen.