Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Když se pokusíte použít .NET v Linuxu, příkazy jako dotnet new a dotnet run mohou selhat se zprávou o tom, že nebyl nalezen soubor, například fxr, libhostfxr.so nebo FrameworkList.xml. Některé chybové zprávy se můžou podobat následujícím položkám:
System.IO.FileNotFoundException
System.IO.FileNotFoundException: Nelze najít soubor //usr/share/dotnetpacks/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml.
Došlo k závažné chybě.
Došlo k závažné chybě. Požadovanou knihovnu libhostfxr.so nelze najít.
nebo
Došlo k závažné chybě. Složka [//usr/share/dotnethost/fxr] neexistuje.
nebo
Došlo k fatální chybě, složka [/usr/share/dotnet/host/fxr] neobsahuje žádné podřízené složky s číslem verze.
Obecné zprávy o dotnet nenalezeny
Může se zobrazit obecná zpráva, která značí, že sada SDK nebyla nalezena nebo že už je balíček nainstalovaný.
Jedním z příznaků těchto problémů je, že ve /usr/lib64/dotnet vašem systému jsou obě složky i /usr/share/dotnet složky.
Návod
Použijte příkaz dotnet --info k zobrazení seznamu nainstalovaných sad SDK a běhových prostředí. Další informace naleznete v tématu Jak zkontrolovat, zda je .NET již nainstalován.
Co se děje
Důležité
Od .NET 9 microsoft publikuje balíčky pouze pro podporované linuxové distribuce, které nepublikují vlastní balíčky. Další informace naleznete v tématu Instalace .NET v Linuxu.
K těmto chybám obvykle dochází, když dvě úložiště balíčků Linuxu poskytují balíčky .NET. I když Microsoft poskytuje úložiště balíčků pro Linux pro zdrojové balíčky .NET, některé distribuce Linuxu také poskytují balíčky .NET. Mezi tyto distribuce patří:
- Alpine Linux
- Oblouk
- CentOS Stream
- Plstěný klobouk
- RHEL (Red Hat Enterprise Linux)
- Ubuntu 22.04+
Pokud balíčky .NET kombinujete ze dvou různých zdrojů, pravděpodobně narazíte na problémy. Balíčky můžou umístit věci na různé cesty a můžou se zkompilovat jinak.
Řešení
Řešením těchto problémů je použití .NET z jednoho úložiště balíčků. Které úložiště můžete vybrat a jak ho provést, se liší podle případů použití a distribuce Linuxu.
- Distribuce Linuxu poskytuje balíčky .NET a chci je použít.
- Potřebuji verzi .NET, která není součástí distribuce Linuxu.
Distribuce Linuxu poskytuje balíčky .NET a chci je použít
Používáte úložiště Microsoftu pro jiné balíčky, jako je PowerShell a MSSQL?
Ano
Nakonfigurujte správce balíčků tak, aby ignoroval balíčky .NET z úložiště Microsoftu. Je možné, že jste nainstalovali .NET z obou úložišť, takže chcete zvolit jedno nebo druhé.
Odeberte existující balíčky .NET z vaší distribuce. Chcete začít znovu a ujistit se, že je neinstalujete z nesprávného úložiště.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'Nakonfigurujte úložiště Microsoftu tak, aby ignorovala balíčky .NET.
echo 'excludepkgs=dotnet*,aspnet*,netstandard*' | sudo tee -a /etc/yum.repos.d/microsoft-prod.repoPřeinstalujte .NET z distribučního balíčkového kanálu. Další informace naleznete v tématu Instalace .NET v Linuxu.
Ne
Odeberte existující balíčky .NET z vaší distribuce. Chcete začít znovu a ujistit se, že je neinstalujete z nesprávného úložiště.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'Odstraňte repozitář Microsoftu z vašeho systému.
sudo dnf remove packages-microsoft-prodPřeinstalujte .NET z distribučního balíčkového kanálu. Další informace naleznete v tématu Instalace .NET v Linuxu.
Používáte úložiště Microsoftu pro jiné balíčky, jako je PowerShell a MSSQL?
Ano
Nakonfigurujte správce balíčků tak, aby ignoroval balíčky .NET z úložiště Microsoftu. Je možné, že jste nainstalovali .NET z obou úložišť, takže chcete zvolit jedno nebo druhé.
Odeberte existující balíčky .NET z vaší distribuce. Chcete začít znovu a ujistit se, že je neinstalujete z nesprávného úložiště.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'Vytvořte
/etc/apt/preferences, pokud ještě neexistuje.touch /etc/apt/preferencesOtevřete
/etc/apt/preferencesv editoru a přidejte následující nastavení, která brání balíčkům, které začínajídotnetna ,aspnetcorenebonetstandardaby byly zdrojové z úložiště Microsoftu:Package: dotnet* aspnet* netstandard* Pin: origin "packages.microsoft.com" Pin-Priority: -10Přeinstalujte .NET z distribučního balíčkového kanálu. Další informace naleznete v tématu Instalace .NET v Linuxu.
Ne
Odeberte existující balíčky .NET z vaší distribuce. Chcete začít znovu a ujistit se, že je neinstalujete z nesprávného úložiště.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'Odstraňte repozitář Microsoftu z vašeho systému.
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list sudo apt updatePřeinstalujte .NET z distribučního balíčkového kanálu. Další informace naleznete v tématu Instalace .NET v Linuxu.
Potřebuji verzi .NET, která není součástí distribuce Linuxu
Nakonfigurujte správce balíčků tak, aby ignoroval balíčky .NET z úložiště distribuce. Je možné, že jste nainstalovali .NET z obou úložišť, takže chcete zvolit jedno nebo druhé.
Odeberte existující balíčky .NET z vaší distribuce. Chcete začít znovu a ujistit se, že je neinstalujete z nesprávného úložiště.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'Nakonfigurujte úložiště Linux tak, aby ignorovala balíčky .NET.
echo 'excludepkgs=dotnet*,aspnet*,netstandard*' | sudo tee -a /etc/yum.repos.d/<your-package-source>.repoNezapomeňte nahradit
<your-package-source>zdrojem balíčku vaší distribuce.Přeinstalujte .NET z distribučního balíčkového kanálu. Další informace naleznete v tématu Instalace .NET v Linuxu.
Nakonfigurujte správce balíčků tak, aby ignoroval balíčky .NET z úložiště distribuce. Je možné, že jste nainstalovali .NET z obou úložišť, takže chcete zvolit jedno nebo druhé.
Odeberte existující balíčky .NET z vaší distribuce. Chcete začít znovu a ujistit se, že je neinstalujete z nesprávného úložiště.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'Vytvořte
/etc/apt/preferences, pokud ještě neexistuje.touch /etc/apt/preferencesOtevřete
/etc/apt/preferencesv editoru a přidejte apt fragment předvoleb, abyste zabránili balíčkům, které začínají nadotnet,aspnetcorenebonetstandard, aby byly používány z úložiště distribuce.Package: dotnet* aspnet* netstandard* Pin: origin "<your-package-source>" Pin-Priority: -10Nezapomeňte nahradit
<your-package-source>zdrojem balíčku vaší distribuce.Vaše distribuce může mít více zdrojů balíčků.
Například v Ubuntu v USA možná budete muset použít jeden fragment pro
archive.ubuntu.coma druhý prosecurity.ubuntu.com. Jednotlivé fragmenty oddělte prázdným řádkem takto:Package: dotnet* aspnet* netstandard* Pin: origin "archive.ubuntu.com" Pin-Priority: -10 Package: dotnet* aspnet* netstandard* Pin: origin "security.ubuntu.com" Pin-Priority: -10Návod
apt-cache policyPomocí příkazu vyhledejte zdroj:apt-cache policy '?name(dotnet.*)' | grep -v microsoft | grep '/ubuntu' | cut -d"/" -f3 | sort -uNávod
Pokud jste zaregistrovali úložiště balíčků Ubuntu .NET backports, měli byste odregistrovat úložiště balíčků Ubuntu .NET backports místo konfigurace správce balíčků tak, aby ignoroval obsažené balíčky .NET. Jinak správce balíčků načte index balíčku z tohoto úložiště, aby ho ignoroval, protože úložiště obsahuje pouze balíčky .NET. Tím se efektivně zpomalí aktualizace místního indexu balíčků při každém volání
apt update.apt-cache policyPomocí příkazu zkontrolujte, jestli jste zaregistrovali úložiště balíčků Ubuntu .NET backports:apt-cache policy '?name(dotnet.*)' | grep 'ppa.launchpadcontent.net/dotnet/backports' | sort -uPřeinstalujte .NET z balíčkového kanálu Microsoftu. Další informace naleznete v tématu Instalace .NET v Linuxu. Pokud používáte Ubuntu, přečtěte si téma Moje distribuce Ubuntu neobsahuje požadovanou verzi .NET nebo potřebuji verzi .NET, která není podporována.
Online odkazy
Mnoho dalších uživatelů tyto problémy nahlásilo. Následuje seznam těchto problémů. Můžete si je projít a získat přehled o tom, co se může stát:
System.IO.FileNotFoundException a /usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml.
- SDK č. 15785: Po upgradu na verzi 5.0.3 nejde sestavit úplně nový projekt
- SADA SDK č. 15863: Úloha MSB4018 ResolveTargetingPackAssets se neočekávaně nezdařila" po aktualizaci na 5.0.103
- SDK č. 17411: dotnet Sestavení vždy vyvolává chybu
- SDK č. 12075: dotnet 3.1.301 v Fedora 32 nelze najít FrameworkList.xml , protože neexistuje
Závažná chyba: libhostfxr.so Nepodařilo se najít
Závažná chyba: Složka /host/fxr neexistuje
Závažná chyba: Složka /host/fxr neobsahuje žádné podřízené složky očíslované podle verzí.
Obecné chyby bez jasných zpráv
- Core #4605: Nejde spustitdotnet novou konzolu
- Core č. 4644: V Fedora 32 nejde nainstalovat sadu .NET Core SDK 2.1
- Modul runtime č. 49375: Po aktualizaci na verzi 5.0.200-1 pomocí správce balíčků se zdá, že nejsou nainstalovány žádné sady SDK.
- Instalační program č. 16438: Aplikace --version neexistuje