Événement
Créer des applications intelligentes
17 mars, 23 h - 21 mars, 23 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Lorsque vous essayez d’utiliser .NET sous Linux, les commandes telles que dotnet new
et dotnet run
peuvent échouer avec un message lié à un fichier introuvable, tel que fxr, libhostfxr.so ou FrameworkList.xml. Vous pouvez par exemple recevoir des messages d’erreur semblables aux suivants :
System.IO.FileNotFoundException
System.IO.FileNotFoundException : Le fichier « /usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml » est introuvable.
Une erreur irrécupérable s’est produite.
Une erreur irrécupérable s'est produite. La bibliothèque requise libhostfxr.so est introuvable.
ou
Une erreur irrécupérable s'est produite. Le dossier [/usr/share/dotnet/host/fxr] n’existe pas.
ou
Une erreur irrécupérable s’est produite, le dossier [/usrshare/dotnethost/fxr] ne contient aucun dossier enfant avec numéro de version.
Messages génériques sur dotnet introuvables
Un message général peut s’afficher et indiquer que le kit de développement logiciel (SDK) est introuvable ou que le package a déjà été installé.
La présence des dossiers /usr/lib64/dotnet
et /usr/share/dotnet
sur votre système est un symptôme de ces problèmes.
Conseil
Utilisez la commande dotnet --info
pour lister les SDK et les runtimes installés. Pour plus d’informations, consultez Comment vérifier que .NET est déjà installé.
Important
À compter de .NET 9, Microsoft publie uniquement des packages pour les distributions Linux prises en charge qui ne publient pas leurs propres packages. Pour plus d’informations, consultez Installer .NET sur Linux.
Ces erreurs se produisent généralement quand deux dépôts de packages Linux fournissent des packages .NET. Bien que Microsoft fournisse un référentiel de packages Linux pour approvisionner les packages .NET, certaines distributions Linux fournissent également des packages .NET. Ces distributions comprennent :
Si vous combinez des packages .NET de deux sources différentes, vous rencontrerez probablement des problèmes. Les packages peuvent placer des éléments sur des chemins d’accès différents et être compilés différemment.
La solution à ces problèmes consiste à utiliser .NET à partir d’un seul référentiel de packages. Le choix du référentiel et la façon de le faire varient en fonction du cas d’usage et de la distribution Linux.
Utilisez-vous le dépôt Microsoft pour d’autres packages, tels que PowerShell et MSSQL ?
Oui
Configurez votre gestionnaire de packages de manière à ignorer les packages .NET à partir du dépôt Microsoft. Il est possible que vous ayez installé .NET à partir des deux dépôts. Vous devez donc choisir l’un ou l’autre.
Supprimez les packages .NET existants de votre distribution. Vous devez recommencer en veillant à ne pas les installer à partir du dépôt incorrect.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'
Configurez le dépôt Microsoft de manière à ignorer les packages .NET.
echo 'excludepkgs=dotnet*,aspnet*,netstandard*' | sudo tee -a /etc/yum.repos.d/microsoft-prod.repo
Réinstallez .NET à partir du flux de package de la distribution. Pour plus d’informations, consultez Installer .NET sur Linux.
Non
Supprimez les packages .NET existants de votre distribution. Vous devez recommencer en veillant à ne pas les installer à partir du dépôt incorrect.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'
Supprimez le flux de dépôt Microsoft de votre distribution.
sudo dnf remove packages-microsoft-prod
Réinstallez .NET à partir du flux de package de la distribution. Pour plus d’informations, consultez Installer .NET sur Linux.
Utilisez-vous le dépôt Microsoft pour d’autres packages, tels que PowerShell et MSSQL ?
Oui
Configurez votre gestionnaire de packages de manière à ignorer les packages .NET à partir du dépôt Microsoft. Il est possible que vous ayez installé .NET à partir des deux dépôts. Vous devez donc choisir l’un ou l’autre.
Supprimez les packages .NET existants de votre distribution. Vous devez recommencer en veillant à ne pas les installer à partir du dépôt incorrect.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'
Si ce n’est déjà fait, créez /etc/apt/preferences
.
touch /etc/apt/preferences
Ouvrez /etc/apt/preferences
dans un éditeur et ajoutez les paramètres suivants afin que les packages qui commencent par dotnet
, aspnetcore
ou netstandard
ne puissent pas être sourcés à partir du dépôt Microsoft :
Package: dotnet* aspnet* netstandard*
Pin: origin "packages.microsoft.com"
Pin-Priority: -10
Réinstallez .NET à partir du flux de package de la distribution. Pour plus d’informations, consultez Installer .NET sur Linux.
Non
Supprimez les packages .NET existants de votre distribution. Vous devez recommencer en veillant à ne pas les installer à partir du dépôt incorrect.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'
Supprimez le flux de dépôt Microsoft de votre distribution.
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo apt update
Réinstallez .NET à partir du flux de package de la distribution. Pour plus d’informations, consultez Installer .NET sur Linux.
Configurez votre gestionnaire de packages de manière à ignorer les packages .NET à partir du dépôt de la distribution. Il est possible que vous ayez installé .NET à partir des deux dépôts. Vous devez donc choisir l’un ou l’autre.
Supprimez les packages .NET existants de votre distribution. Vous devez recommencer en veillant à ne pas les installer à partir du dépôt incorrect.
sudo dnf remove 'dotnet*' 'aspnet*' 'netstandard*'
Configurez le dépôt Linux de manière à ignorer les packages .NET.
echo 'excludepkgs=dotnet*,aspnet*,netstandard*' | sudo tee -a /etc/yum.repos.d/<your-package-source>.repo
Veillez à remplacer <your-package-source>
par la source de package de votre distribution.
Réinstallez .NET à partir du flux de package de la distribution. Pour plus d’informations, consultez Installer .NET sur Linux.
Configurez votre gestionnaire de packages de manière à ignorer les packages .NET à partir du dépôt de la distribution. Il est possible que vous ayez installé .NET à partir des deux dépôts. Vous devez donc choisir l’un ou l’autre.
Supprimez les packages .NET existants de votre distribution. Vous devez recommencer en veillant à ne pas les installer à partir du dépôt incorrect.
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'
Si ce n’est déjà fait, créez /etc/apt/preferences
.
touch /etc/apt/preferences
Ouvrez /etc/apt/preferences
dans un éditeur et ajoutez un fragment de préférences apt pour empêcher les packages qui commencent par dotnet
, aspnetcore
ou netstandard
d’être sources du dépôt de la distribution.
Package: dotnet* aspnet* netstandard*
Pin: origin "<your-package-source>"
Pin-Priority: -10
Veillez à remplacer <your-package-source>
par la source de package de votre distribution.
Votre distribution peut avoir plus d’une source de package.
Par exemple, sur Ubuntu aux États-Unis, vous pouvez utiliser un fragment pour archive.ubuntu.com
et un autre pour security.ubuntu.com
. Séparez chaque fragment par une ligne vide de la manière suivante :
Package: dotnet* aspnet* netstandard*
Pin: origin "archive.ubuntu.com"
Pin-Priority: -10
Package: dotnet* aspnet* netstandard*
Pin: origin "security.ubuntu.com"
Pin-Priority: -10
Conseil
Utilisez la commande apt-cache policy
pour rechercher la source :
apt-cache policy '?name(dotnet.*)' | grep -v microsoft | grep '/ubuntu' | cut -d"/" -f3 | sort -u
Conseil
Si vous avez inscrit le référentiel de packages de rétroports .NET d’Ubuntu, vous devez Annuler l’inscription du dépôt des packages de rétroports .NET d’Ubuntu au lieu de configurer votre gestionnaire de package pour ignorer les packages .NET contenus. Sinon, votre gestionnaire de package extrait l’index du package depuis ce référentiel, juste pour l’ignorer, car le référentiel contient uniquement des packages .NET. Cela ralentit considérablement la mise à jour de votre index de package local à chaque appel de apt update
.
Utilisez la commande apt-cache policy
pour vérifier si vous avez inscrit le référentiel du package de rétroports Ubuntu .NET :
apt-cache policy '?name(dotnet.*)' | grep 'ppa.launchpadcontent.net/dotnet/backports' | sort -u
Réinstallez .NET à partir du flux de package Microsoft. Pour plus d’informations, consultez Installer .NET sur Linux. Si vous utilisez Ubuntu, consultez Ma distribution Ubuntu n’inclut pas la version .NET souhaitée, ou j’ai besoin d’une version .NET sans prise en charge.
De nombreux autres utilisateurs ont signalé ces problèmes. Voici une liste de ces problèmes. N’hésitez pas à les consulter pour en savoir plus sur ce qui peut se passer :
System.IO.FileNotFoundException et « /usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/data/FrameworkList.xml »
Erreur irrécupérable : libhostfxr.so introuvable
Erreur irrécupérable : Le dossier /host/fxr n’existe pas
Erreur irrécupérable : Le dossier /host/fxr ne contient aucun dossier enfant avec numéro de version
Erreurs génériques sans message clair
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événement
Créer des applications intelligentes
17 mars, 23 h - 21 mars, 23 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantFormation
Module
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.