Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Amikor a .NET-et Linuxon próbálja használni, a parancsok, például dotnet newdotnet run sikertelenek lehetnek, ha nem található egy fájlhoz kapcsolódó üzenet, például fxr: , libhostfxr.sovagy FrameworkList.xml. A hibaüzenetek némelyike hasonló lehet a következő elemekhez:
System.IO.FileNotFoundException
System.IO.FileNotFoundException: Nem található a következő fájl: "/usr//share/dotnetpacks/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml".
Végzetes hiba történt.
Végzetes hiba történt. A szükséges kódtár libhostfxr.so nem található.
vagy
Végzetes hiba történt. A[//usr/share/dotnethost/fxr] mappa nem létezik.
vagy
Végzetes hiba történt, a[//usr/share/dotnethost/fxr] mappa nem tartalmaz verziószámozott gyermekmappákat.
Általános üzenetek a(z) dotnet témában nem találhatók
Megjelenhet egy általános üzenet, amely azt jelzi, hogy az SDK nem található, vagy hogy a csomag már telepítve van.
Ezeknek a problémáknak az egyik tünete, hogy mind a /usr/lib64/dotnet és /usr/share/dotnet mappák a rendszeren vannak.
Jótanács
dotnet --info A paranccsal listázhatja, hogy mely SDK-k és futtatókörnyezetek vannak telepítve. További információ: Hogyan ellenőrizheti, hogy a .NET már telepítve van-e.
Mi történik
Fontos
A .NET 9-től kezdve a Microsoft csak olyan támogatott Linux-disztribúciókhoz tesz közzé csomagokat, amelyek nem teszik közzé saját csomagjukat. További információ: .NET telepítése Linuxon.
Ezek a hibák általában akkor fordulnak elő, ha két Linux-csomagtár biztosítja a .NET-csomagokat. Bár a Microsoft linuxos csomagtárházat biztosít a .NET-csomagok forrásához, egyes Linux-disztribúciók .NET-csomagokat is biztosítanak. Ezek a disztribúciók a következők:
- Alpine Linux
- Boltív
- CentOS Stream
- Fedora
- RHEL
- Ubuntu 22.04+
Ha két különböző forrásból származó .NET-csomagokat kever, valószínűleg problémákba ütközik. A csomagok különböző útvonalakon helyezhetik el a dolgokat, és másképpen fordíthatók le.
Megoldások
Ezekre a problémákra a megoldás a .NET használata egy csomagtárházból. A kiválasztandó adattár és annak menete használati esettől és Linux-disztribúciótól függően változik.
- A Linux-disztribúcióm .NET-csomagokat biztosít, és használni szeretném őket.
- Olyan .NET-verzióra van szükségem, amelyet nem a Linux-disztribúcióm biztosít.
A Linux-disztribúcióm .NET-csomagokat biztosít, és használni szeretném őket
Használja a Microsoft-adattárat más csomagokhoz, például a PowerShellhez és az MSSQL-hez?
Igen
Konfigurálja a csomagkezelőt úgy, hogy figyelmen kívül hagyja a Microsoft-adattárból származó .NET-csomagokat. Lehetséges, hogy mindkét adattárból telepítette a .NET-et, ezért az egyiket vagy a másikat szeretné választani.
Távolítsa el a meglévő .NET-csomagokat a disztribúcióból. Újra szeretné kezdeni, és győződjön meg arról, hogy nem a megfelelő adattárból telepíti őket.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'Konfigurálja a Microsoft-adattárat úgy, hogy figyelmen kívül hagyja a .NET-csomagokat.
echo 'excludepkgs=dotnet*,aspnet*,netstandard*' | sudo tee -a /etc/yum.repos.d/microsoft-prod.repoTelepítse újra a .NET-et a disztribúció csomagcsatornájából. További információ: .NET telepítése Linuxon.
Nem
Távolítsa el a meglévő .NET-csomagokat a disztribúcióból. Újra szeretné kezdeni, és győződjön meg arról, hogy nem a megfelelő adattárból telepíti őket.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'Törölje a Microsoft-tárház adatfolyamát a disztribúcióból.
sudo dnf remove packages-microsoft-prodTelepítse újra a .NET-et a disztribúció csomagcsatornájából. További információ: .NET telepítése Linuxon.
Használja a Microsoft-adattárat más csomagokhoz, például a PowerShellhez és az MSSQL-hez?
Igen
Konfigurálja a csomagkezelőt úgy, hogy figyelmen kívül hagyja a Microsoft-adattárból származó .NET-csomagokat. Lehetséges, hogy mindkét adattárból telepítette a .NET-et, ezért az egyiket vagy a másikat szeretné választani.
Távolítsa el a meglévő .NET-csomagokat a disztribúcióból. Újra szeretné kezdeni, és győződjön meg arról, hogy nem a megfelelő adattárból telepíti őket.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'Hozd létre
/etc/apt/preferences, ha még nem létezik.touch /etc/apt/preferencesNyissa meg a
/etc/apt/preferenceselemet egy szerkesztőben, és adja hozzá a következő beállításokat, amelyek megakadályozzák, hogy azok a csomagok, amelyekdotnet,aspnetcorevagynetstandard-tel kezdődnek, a Microsoft-adattárból származzanak.Package: dotnet* aspnet* netstandard* Pin: origin "packages.microsoft.com" Pin-Priority: -10Telepítse újra a .NET-et a disztribúció csomagcsatornájából. További információ: .NET telepítése Linuxon.
Nem
Távolítsa el a meglévő .NET-csomagokat a disztribúcióból. Újra szeretné kezdeni, és győződjön meg arról, hogy nem a megfelelő adattárból telepíti őket.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'Törölje a Microsoft-tárház adatfolyamát a disztribúcióból.
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list sudo apt updateTelepítse újra a .NET-et a disztribúció csomagcsatornájából. További információ: .NET telepítése Linuxon.
Olyan .NET-verzióra van szükségem, amelyet nem a Linux-disztribúcióm biztosít
Konfigurálja a csomagkezelőt úgy, hogy figyelmen kívül hagyja a .NET-csomagokat a terjesztési adattárból. Lehetséges, hogy mindkét adattárból telepítette a .NET-et, ezért az egyiket vagy a másikat szeretné választani.
Távolítsa el a meglévő .NET-csomagokat a disztribúcióból. Újra szeretné kezdeni, és győződjön meg arról, hogy nem a megfelelő adattárból telepíti őket.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'Konfigurálja a Linux-adattárat úgy, hogy figyelmen kívül hagyja a .NET-csomagokat.
echo 'excludepkgs=dotnet*,aspnet*,netstandard*' | sudo tee -a /etc/yum.repos.d/<your-package-source>.repoÜgyeljen arra, hogy a
<your-package-source>helyett a saját terjesztésének csomagforrását használja.Telepítse újra a .NET-et a disztribúció csomagcsatornájából. További információ: .NET telepítése Linuxon.
Konfigurálja a csomagkezelőt úgy, hogy figyelmen kívül hagyja a .NET-csomagokat a terjesztési adattárból. Lehetséges, hogy mindkét adattárból telepítette a .NET-et, ezért az egyiket vagy a másikat szeretné választani.
Távolítsa el a meglévő .NET-csomagokat a disztribúcióból. Újra szeretné kezdeni, és győződjön meg arról, hogy nem a megfelelő adattárból telepíti őket.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'Hozd létre
/etc/apt/preferences, ha még nem létezik.touch /etc/apt/preferencesNyisson meg
/etc/apt/preferencesegy szerkesztőben, és adjon hozzá egy találó preferenciák töredékét, hogy megakadályozza azokat a csomagokat, amelyekdotnet,aspnetcorevagynetstandardelőtaggal kezdődnek abban, hogy a disztribúció adattárából legyenek forrásként származtatva.Package: dotnet* aspnet* netstandard* Pin: origin "<your-package-source>" Pin-Priority: -10Ügyeljen arra, hogy a
<your-package-source>helyett a saját terjesztésének csomagforrását használja.Előfordulhat, hogy a disztribúció több csomagforrással is rendelkezik.
Például az USA-beli Ubuntu esetében előfordulhat, hogy az egyik töredékhez
archive.ubuntu.com-t, a másikhoz pedigsecurity.ubuntu.com-t kell használnia. Különítse el az egyes töredékeket a következőhöz hasonló üres vonallal:Package: dotnet* aspnet* netstandard* Pin: origin "archive.ubuntu.com" Pin-Priority: -10 Package: dotnet* aspnet* netstandard* Pin: origin "security.ubuntu.com" Pin-Priority: -10Jótanács
A forrás megkereséséhez használja a
apt-cache policyparancsot:apt-cache policy '?name(dotnet.*)' | grep -v microsoft | grep '/ubuntu' | cut -d"/" -f3 | sort -uJótanács
Ha regisztrálta az Ubuntu .NET backports csomagtárat , akkor a csomagkezelő konfigurálása helyett törölje az Ubuntu .NET backports csomagtárház regisztrációját ahelyett, hogy a csomagkezelőt úgy konfigurálná, hogy figyelmen kívül hagyja a tartalmazott .NET-csomagokat. Ellenkező esetben a csomagkezelő lekéri a csomagindexet ebből az adattárból, csak azért, hogy figyelmen kívül hagyja, mert az adattár csak .NET-csomagokat tartalmaz. Ez gyakorlatilag lelassítja a helyi csomagindex frissítését minden híváskor
apt update.apt-cache policyA paranccsal ellenőrizze, hogy regisztrálta-e az Ubuntu .NET backports csomagtárat:apt-cache policy '?name(dotnet.*)' | grep 'ppa.launchpadcontent.net/dotnet/backports' | sort -uTelepítse újra a .NET-et a Microsoft csomagcsatornájából. További információ: .NET telepítése Linuxon. Ha Ubuntu-t használ, olvassa el az Ubuntu-disztribúció nem tartalmazza a kívánt .NET-verziót, vagy egy nem támogatott .NET-verzióra van szükségem.
Online hivatkozások
Sok más felhasználó jelentette ezeket a problémákat. Az alábbiakban felsoroljuk ezeket a problémákat. A következő információkból megtudhatja, hogy mi történhet:
System.IO.FileNotFoundException és '/usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml'
- SDK #15785: nem lehet teljesen új projektet létrehozni az 5.0.3-ra való frissítés után
- SDK #15863: "MSB4018 ResolveTargetingPackAssets feladat váratlanul meghiúsult" az 5.0.103-ra való frissítés után
- SDK #17411: dotnet a build mindig hibát jelez
- SDK #12075: dotnet 3.1.301 a Fedora 32-n nem található FrameworkList.xml , mert nem létezik
Végzetes hiba: libhostfxr.so nem található
Végzetes hiba: a mappa /host/fxr nem létezik
Végzetes hiba: a /host/fxr mappa nem tartalmaz verziószámozott gyermekmappákat
Általános hibák egyértelmű üzenetek nélkül