Résultat: 0x80131040: la définition du Manifeste de l'assemblage localisé ne correspond pas à la référence de l'assemblage
la définition du Manifeste de l'assemblage localisé ne correspond pas à la référence de l'assemblage
j'obtiens ça en courant nunit à travers ncover. Une idée?
18 réponses
il s'agit d'un décalage entre les assemblées: une DLL référencée à partir d'une assemblée n'a pas de signature de méthode qui est attendue.
nettoyer la solution, tout reconstruire, et essayer à nouveau.
aussi, soyez prudent si c'est une référence à quelque chose qui est dans le GAC; il se pourrait que quelque chose quelque part pointe vers une version incorrecte. Assurez-vous (via les Propriétés de chaque référence) que la version correcte est choisie ou Spécifiques Version est fausse.
j'ai récemment eu ce problème et j'ai couru 'dépend.exe " sur la dll en question. Il m'a montré que la dll a été compilée dans x86 tandis que certaines des dépendances ont été compilées dans x64.
si vous avez encore des problèmes, je vous recommande d'utiliser depends.EXE.
Cela se produit généralement lorsque la version de la Dll de l'environnement de test ne correspond pas à l'environnement de développement.
nettoyer et construire votre solution et prendre tous vos DLLs à l'environnement où l'erreur se produit qui devrait corriger
dans mon cas pour un projet de services de repos de wcf j'ai dû ajouter dans le web.config un moteur d'exécution de la section où il y avait la dll demandée, puis-je ajouter :
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
.
.
.
<runtime>
mes problèmes résolus par supprimer toute la partie de l'exécution
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
dans mon cas j'ai eu ce message pendant le débogage:
"Error while calling service <ServiceName> Could not load file or assembly 'RestSharp,
Version=105.2.3.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference.
(Exception from HRESULT: 0x80131040)"
Cause
dans mon projet j'ai eu 2 composants internes utilisant le RestSharp mais les deux composants ont une version différente de RestSharp (un avec la version 105.2.3.0
et l'autre avec la version 106.2.1.0
).
Solution
soit mettre à niveau l'un des composants en un nouveau ou déclassement de l'autre. Dans mon cas, il était plus sûr pour moi de passer de 106.2.1.0
à 105.2.3.0
et de mettre à jour le composant dans NuGet package manager. Donc les deux composants ont la même version.
reconstruire et il a travaillé sans problèmes.
dans ma situation particulière, j'ai obtenu ceci à la suite d'un CreateObject
fait en VBScript.
La cause dans mon cas était une version de l'assemblée qui résidait dans le GAC, qui était plus ancienne que celle que j'avais compilée. (en essayant de résoudre un problème plus tôt, j'ai installé l'assemblage dans le GAC).
donc, si vous travaillez avec des classes visibles COM, assurez-vous de supprimer les anciennes versions de votre assemblage du GAC, avant d'enregistrer votre nouvel assemblage avec RegASM.
j'ai rencontré des problèmes similaires lors de l'accès aux fichiers du projet à partir de différents ordinateurs via un dossier partagé. Dans mon cas, clean + reabuild n'a pas aidé. Il a fallu supprimer les dossiers bin et objects du répertoire de sortie.
dans mon cas, c'était à cause de WebGrease. Je l'ai mis à jour à la dernière version (en utilisant NuGet) mais il était en conflit avec les dépendances. J'ai ajouté manuellement le code ci-dessous dans web.config et cela a fonctionné comme un charme.
<dependentAssembly>
<assemblyIdentity name="WebGrease" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
</dependentAssembly>
veuillez noter que ma solution ne fonctionnera que lorsque l'erreur est liée à WebGrease. Le code d'erreur reste le même. De plus, vous devez modifier la version dans oldVersion et newVersion en conséquence.
j'ai rencontré ce problème dans un projet d'api web.
projet Api utilisait un paquet nuget d'une bibliothèque avec la version 3. Et l'un des assemblages référencés dit que X utilisait la version plus ancienne du même paquet nuget avec la version 2.
chaque fois que l'assemblage référencé est construit ou que tout autre référencement de projet X est reconstruit, les assemblages de projet api sont mis à jour avec une version plus basse. Et j'ai eu cette erreur de référence d'assemblage.
Reconstruire fonctionne mais dans mon cas je voulais une solution à long terme.
j'ai fait référence aux assemblages à la même version du paquet nuget.
une autre affaire. J'ai eu cette erreur de Managed Debugging Assistant lors de la première désérialisation d'un fichier XML dans des objets sous VS2010/.NET 4. Une DLL contenant des classes pour les objets est générée dans un événement post-build (classique Microsoft style stuff). Très bien travaillé pour plusieurs projets dans la même solution, problème apparu lors de faire cela dans un autre des projets. Erreur texte:
MessageBindingFailure a été détecté: l'Assemblée avec nom d'affichage MyProjectName.Xmlserializers "n'a pas réussi à charger la liaison "Load From" contexte de L'AppDomain avec ID 1. La cause de l'échec a été: Système.IO.FileLoadException: impossible de charger le fichier ou l'assemblage MyProjectName.XmlSerializers, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = null' ou l'une de ses dépendances. La situé assemblée manifeste définition ne correspond pas à la référence d'assembly. (Exception de HRESULT: 0x80131040)
étant donné que certaines réponses ici suggéraient une inadéquation de la plateforme, j'ai remarqué que 3 projets et la solution avaient une configuration" mixte " sélectionnée, et 3 projets étaient compilés pour x86 au lieu de AnyCPU. Je n'ai pas de code spécifique à la plate-forme (bien que certains DLLs fournis par le fournisseur s'appuient sur quelques bibliothèques x86). J'ai remplacé toutes les occurrences de x86 dans AnyCPU par ceci:
for a in $( egrep '(x86|AnyCPU)' */*.csproj *.sln -l ) ; do echo $a ; sed -i 's/x86/AnyCPU/' $a ; done
alors le projet construirait mais toutes les options pour exécuter ou déboguer le code seraient grisés. Redémarrer VS n'aiderait pas.
j'ai inversé avec git les références à la bibliothèque x86, juste au cas où, mais j'ai gardé AnyCPU pour tout le code que j'ai compilé.
suivant F5 ou le bouton de débogage de démarrage est grisé pour L'application Winform? j'ai déchargé et rechargé le projet de départ (c'était aussi celui où le problème initial est apparu en premier lieu).
après ça, tout s'est remis en place: le programme fonctionne sans erreur initiale.
voir http://www.catb.org/jargon/html/R/rain-dance.html , http://www.catb.org/jargon/html/V/voodoo-programming.html ou http://www.catb.org/jargon/html/I/incantation.html et liens ici.
j'ai eu le problème où il ne serait pas trouver L'Assemblée PayPal et c'était parce que j'avais nommé ma solution PayPal. Je suis sûr que ce ne sera la réponse pour personne mais j'ai pensé que je partagerais de toute façon: C# ASP.NET MVC PayPal ne trouve pas l'assemblage
j'efface juste les paramètres.fichier lic du projet et commencer à travailler!
cela m'est arrivé quand j'ai mis à jour le web.config sans mettre à jour tous les dlls référencés.
en utilisant le filtre de diff approprié (attention au répertoire par défaut de Meld comparez le filtre en ignorant les binaires) la différence a été identifiée, les fichiers ont été copiés et tout a bien fonctionné.
il suffit de vérifier votre fichier webconfig et de supprimer ce code: -
<dependentAssembly>
<assemblyIdentity name="itextsharp" publicKeyToken="8354ae6d2174ddca" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.5.13.0" newVersion="5.5.13.0" />
</dependentAssembly>
vient de supprimer le dossier bin et le projet recrée tout et maintenant il fonctionne.
j'ai eu cette erreur en travaillant dans le Designer. J'avais développé dans VS 2012, mais "mis à niveau" à 2017 au cours des deux derniers jours. La Solution était de fermer et de rouvrir VS.
cela peut être lié à un bug que j'ai vu rapporter ailleurs , où le référentiel ne fonctionne pas? Dans cette situation, le message d'erreur suivant apparaît lorsqu'on essaie d'ajouter une référence dans L'Explorateur de solutions:
"Erreur HRESULT E_FAIL a été renvoyé à partir d'un appel à un COM composant."
ma solution était de fermer la solution, rouvrir en VS2012, ajouter la référence, fermer 2012 et rouvrir 2017. Il est ridicule que 2017 soit sorti avec un bug aussi évident.
si vous avez eu cette erreur en essayant d'ajouter un composant à Visual Studio,- Microsoft.VisualStudio.TemplateWizardInterface
- (après avoir essayé d'installer des outils de développement bizarres)
considérez cette solution (gracieuseté de larocha (merci, qui que vous soyez)):
- ouvert C:\Program fichiers\Microsoft Visual Studio 9.0\Common7\IDE\devenv.EXE.config dans un éditeur de texte
- trouver cette chaîne de caractères: "
Microsoft.VisualStudio.TemplateWizardInterfac
e " - commenter l'élément ainsi il ressemble à ceci:
<dependentAssembly>
<!-- assemblyIdentity name="Microsoft.VisualStudio.TemplateWizardInterface" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" / -->
<bindingRedirect oldVersion="0.0.0.0-8.9.9.9" newVersion="9.0.0.0" />
</dependentAssembly>
source: http://webclientguidance.codeplex.com/workitem/15444