J'ai une bibliothèque de classes .NET Standard 1.4 qui fait référence au paquet NuGet System.ComponentModel.Annotations (4.3.0).
Je fais ensuite référence à cette bibliothèque de classes à partir d'un projet de test .NET Framework 4.6.2. Il se construit bien, mais au moment de l'exécution, j'obtiens l'erreur suivante :
System.IO.FileLoadException s'est produit HResult=0x80131040
Message= Impossible de charger le fichier ou l'assemblage System.ComponentModel.Annotations, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ou l'une de ses dépendances. La définition du manifeste de l'assemblage définition du manifeste de l'assemblage localisé ne correspond pas à l'assemblage d'assemblage. (Exception de HRESULT : 0x80131040)
J'ai essayé d'ajouter une référence au paquet NuGet System.ComponentModel.Annotations (4.3.0) du projet net462, mais cela n'a fait aucune différence.
J'ai essayé d'ajouter une référence à la bibliothèque .NET Standard du projet net462, mais toujours pas de chance.
Est-ce que quelque chose m'échappe ? S'agit-il d'un bogue connu ? Si oui, existe-t-il un moyen de le contourner ?
Toute aide est la bienvenue !
0 votes
Utiliser le Attribut bindingRedirect dans app.config pour forcer l'utilisation de la librairie 4.3.0.0
26 votes
Pour tous ceux qui ne disposent pas de la Version=4.2.0.0 : L'installation de System.ComponentModel.Annotations 4.4.1 à partir de la galerie NuGet a réglé le problème pour moi.
0 votes
@user764754 Merci beaucoup !
12 votes
Le problème semble s'être encore aggravé dans .Net Core 2.1 (utilisé en combinaison avec .Net 4.7.1). System.ComponentModel.Annotations 4.5.0 ne semble plus être en mesure de trouver Version=4.2.0.0, vous obligeant à revenir à bindingRedirect oldVersion="4.2.0.0" newVersion="4.0.0.0"/>. Il est étrange que Microsoft ne soit apparemment pas en mesure de résoudre ces problèmes avec System.ComponentModel.Annotations. Ils sont déjà là depuis près de deux ans.
7 votes
@JRB votre suggestion n'a pas fonctionné pour moi mais une suggestion ajustée. Je me suis retrouvé avec
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.1.0" />
ce qui a réglé le problème.0 votes
@t3chb0t : C'est bien que vous ayez trouvé une solution. Je me souviens que fin mai j'ai d'abord essayé oldVersion="0.0.0.0-4.5.0.0" newVersion="4.2.1.0" mais dans mon cas cela n'a pas fonctionné, probablement parce que ma configuration est quelque peu atypique. Peut-être que plus tard, j'essaierai votre solution.
0 votes
Dans mon projet ASP.NET core, voici mon problème et ma solution : stackoverflow.com/a/53032512/538387