L'assemblée manifeste définition ne correspond pas à la référence d'assembly
Je suis en train de lancer quelques tests unitaires en C# application Windows Forms (Visual Studio 2005), et j'obtiens l'erreur suivante:
Système.IO.FileLoadException: impossible de charger le fichier ou l'assembly 'Utilitaire, Version=1.2.0.200, Culture=neutral, PublicKeyToken=764d581291d764f7' ou une de ses dépendances. L'assemblée manifeste définition ne correspond pas à la référence d'assembly. (Exception de HRESULT: 0x80131040)**
à x.Foo.FooGO()
à x.Foo.Foo2(String groupName_) Foo.cs:ligne 123
à x.Foo.UnitTests.FooTests.TestFoo() dans FooTests.cs:ligne 98**
Système.IO.FileLoadException: impossible de charger le fichier ou l'assembly 'Utilitaire, Version=1.2.0.203, Culture=neutral, PublicKeyToken=764d581291d764f7' ou une de ses dépendances. L'assemblée manifeste définition ne correspond pas à la référence d'assembly. (Exception de HRESULT: 0x80131040)
Je regarde dans mes références, et je n'ai qu'une référence à Utility version 1.2.0.203
(l'autre est vieux).
Des suggestions sur la façon dont je comprendre ce qui est en train d'essayer de référence de cette ancienne version de ce fichier DLL?
D'ailleurs, je ne pense pas que j'ai même cette ancienne assemblée sur mon disque dur.
Est-il un outil de recherche pour cette ancienne versionnées assemblée?
Vous devez vous connecter pour publier un commentaire.
L' .NET de l'Assemblée chargeur est impossible de trouver 1.2.0.203, mais a trouvé un 1.2.0.200. Cette assemblée ne correspond pas à ce qui avait été demandé et, par conséquent, vous obtenez cette erreur. En termes simples, il ne peut pas trouver l'assemblée qui a été référencée. Assurez-vous qu'il peut trouver la droite de l'assemblée en la mettant dans le GAC ou dans le chemin de l'application. Voir aussi http://blogs.msdn.com/junfeng/archive/2004/03/25/95826.aspx.
200
mentionné dans le cas des OP stacktrace?<dependentAssembly> <assemblyIdentity name="Microsoft.Azure.Storage.Common" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" /> </dependentAssembly>
Vous pouvez faire quelques choses pour résoudre ce problème. Tout d'abord, l'utilisation de fichiers de Windows search pour rechercher sur votre disque dur par votre assemblée (.dll). Une fois que vous avez une liste de résultats, Affichage->Choisir les Détails... et puis cochez la case "Fichier" Version. Cela permet d'afficher le numéro de version dans la liste de résultats, de sorte que vous pouvez voir où l'ancienne version peut-être en venir.
Aussi, comme Lars dit, vérifiez votre GAC pour voir quelle version y est listé. Cet article Microsoft stipule que les assemblées trouvé dans le GAC ne sont pas copiés localement pendant une génération, de sorte que vous pouvez avoir besoin de supprimer l'ancienne version avant de faire une reconstruction de tous. (Voir ma réponse à cette question pour les notes sur la création d'un fichier de commandes pour le faire pour vous)
Si vous ne pouvez toujours pas trouver où est l'ancienne version est à venir, vous pouvez utiliser le fuslogvw.exe l'application est livré avec Visual Studio pour obtenir plus d'informations sur la liaison des échecs. Microsoft a d'informations sur cet outil ici. Notez que vous devrez activer l'enregistrement par le réglage de la
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion\EnableLog
clé de registre à 1.Je viens de tomber sur ce problème moi-même, et j'ai trouvé que le problème était quelque chose de différent que ce que les autres ont couru.
J'ai eu deux Dll que mon principal projet est de référencement: CompanyClasses.dll et CompanyControls.dll. J'ai été faire une erreur d'exécution en disant:
Des difficultés, je n'ai pas de CompanyClasses.dll les fichiers sur mon système avec un numéro de version 1.4.1. Aucun dans le GAC, aucun dans l'application des dossiers...aucun n'importe où. J'ai cherché la totalité de mon disque dur. Tous les CompanyClasses.dll les fichiers que j'avais étaient 1.4.2.
Le vrai problème, j'ai trouvé, était que CompanyControls.dll référencé version 1.4.1 de la CompanyClasses.dll. Je viens de recompiler CompanyControls.dll (après l'avoir référence CompanyClasses.dll 1.4.2) et cette erreur est allé loin pour moi.
CompanyControls
projet, cliquez-droit sur leCompanyClasses.dll
de référence --> propriétés - >SpecificVersion = false
SpecificVersion = false
seul n'est pas suffisant. Vous aurez besoin d'unbindingredirect
.Suivantes redirige la version de l'assembly à la version 3.1.0.0. Nous avons un script qui va toujours de mise à jour de cette référence dans l'Application.config donc nous n'avons jamais avoir à traiter avec de nouveau ce problème.
Par la réflexion, vous pouvez obtenir de l'assemblée publicKeyToken et générer ce pâté de maisons de la .dll fichier lui-même.
Noter que sans un espace de noms XML attribut xmlns) cela ne fonctionnera pas.
Si vous utilisez Visual Studio, essayer de "nettoyer la solution" et puis reconstruire votre projet.
bin
etobj
le faire. Fondamentalement, quelque chose que j'ai utilisé pour faire référence est toujours assis là, à tenter de répondre à la même exigence. Par exemple, une ancienne version étant quelque chose que j'ai référencé directement et la nouvelle version en cours sur NuGet.Les autres réponses ne fonctionne pas pour moi. Si vous n'avez pas de soins sur la version et vous voulez juste votre application à exécuter, puis un clic droit sur la référence et la valeur "version spécifique" pour de faux...Cela a fonctionné pour moi.
Je viens de tombé sur cette question et le problème est que j'avais une vieille copie de l' .dll dans mon application debug. Vous pouvez aussi vérifier qu'il n'y (au lieu de le GAC) pour voir si vous la voyez.
J'ai ajouté un package NuGet, pour réaliser une boîte noire partie de ma demande est de la référence à une ancienne version de la bibliothèque.
J'ai supprimé le paquet et fait référence à l'ancienne version statique du fichier DLL, mais le web.fichier de configuration n'a jamais été mis à jour à partir de:
à ce qu'il devrait avoir été lorsque j'ai désinstallé le paquet:
Dans mon cas, cette erreur s'est produite lors de l'exécution d'un ASP.NET application.
La solution a été de:
obj
etbin
dossiers dans le dossier du projetPropre ne fonctionne pas, de reconstruire n'ai pas de travail, toutes les références ont été très bien, mais ce n'était pas l'écriture de l'une des bibliothèques. Après la suppression de ces répertoires, tout a fonctionné parfaitement.
Dans mon cas, c'était une vieille version de la DLL dans C:\WINDOWS\Microsoft.NET\Framework\~\Temporary ASP.NET Files\ répertoire. Vous pouvez supprimer ou de remplacer l'ancienne version, ou vous pouvez supprimer et ajouter la référence à la DLL dans votre projet. En gros, soit la façon de créer un nouveau pointeur temporaire ASP.NET les Fichiers.
Je vais souffler l'esprit de tous, dès maintenant . . .
Supprimer tous les
<assemblyBinding>
références de votre .fichier de config, puis exécutez cette commande à partir du Gestionnaire de Package NuGet console:Pour nous, le problème a été causé par quelque chose d'autre. Le fichier de licence de DevExpress composants inclus deux lignes, l'une pour une ancienne version des composants qui n'a pas été installé sur cet ordinateur. Dépose de l'ancienne version dans le fichier de licence a résolu le problème.
L'ennuyeux, c'est que le message d'erreur n'a donné aucune indication à ce que la référence a été à l'origine des problèmes.
C'est exactement la même erreur est levée si vous essayez à la fin de lier l'aide de la réflexion, si l'assemblée en vous contraignant à obtient un nom fort ou a son public-clés jeton changé. L'erreur est la même, même si il n'y a pas réellement de toute assemblée trouvé avec le jeton de clé publique.
Vous devez ajouter le bon jeton de clé publique (vous pouvez l'obtenir à l'aide de sn -T sur la dll) pour résoudre l'erreur. Espérons que cette aide.
La mienne était une situation très semblable à ce poste par Nathan Bedford, mais avec une légère torsion. Mon projet trop référencé le changement de la dll de deux façons. 1) Directement et 2) Indirectement, par référence à un composant (bibliothèque de classe) qui lui-même avait une référence à l'évolution de la dll. Maintenant, mon projet Visual studio pour le composant(2) fait référence à la version correcte de la modification de la dll. Toutefois, le numéro de version de la compnent lui-même n'a PAS été modifié. Et comme un résultat de l'installation de la nouvelle version du projet a échoué à remplacer ce composant sur la machine client.
Résultat final: référence Directe (1) et Indirectes de référence(2) ont été pointant vers les différentes versions de la modification de la dll à l'ordinateur client. Sur ma machine de dev il a bien fonctionné.
Résolution: Supprimer l'application; Supprimer toutes les DLL dans le dossier de l'application; Re-installer.Simple comme ça dans mon cas.
Je vais laisser quelqu'un bénéfice de mes cisaillement de la stupidité. J'ai quelques dépendances à un tout autre application (appelons cette App1). La dll à partir de ce App1 sont tiré dans ma nouvelle application (App2). Toutes les fois que je fais des mises à jour dans APP1, je dois créer de nouveaux dll et de les copier dans App2. Bien. . .Je suis fatigué de copier et coller entre 2 App1 versions, donc j'ai simplement ajouté un "NEW_' préfixe de la dll.
Bien. . . Je devine que le processus de construction scanne le dossier /bin et lorsqu'elle correspond à quelque chose de mal, il barfs avec le même message d'erreur comme indiqué ci-dessus. J'ai supprimé mon "new_" versions et il construit juste dandy.
Mon problème a été de copier le code source d'une nouvelle machine sans tirer sur tous les assemblys référencés.
Rien que je n'ai corrigé l'erreur, donc, dans la précipitation, j'ai supprimé le répertoire BIN tout à fait. Reconstruit mon code source, et il a travaillé par la suite.
Je voudrais juste ajouter que j'ai été la création d'une base ASP.NET MVC 4 du projet et a ajouté DotNetOpenAuth.Le réseau via NuGet. Cela a donné le même message d'erreur après que j'ai référencé une désadaptation fichier DLL pour Microsoft.Web.Les pages web.OAuth.
Pour le fixer, j'ai fait un
Update-Package
et nettoyé la solution pour une reconstruction complète.Qui a fonctionné pour moi et est une sorte de manière paresseuse, mais le temps est de l'argent:-P
Update-Package -reinstall
re-installe tous les paquets NuGet à la même version.J'ai eu cette erreur lors de la construction sur le Serveur Team Foundation build-service. Il s'est avéré que j'avais de multiples projets dans ma solution à l'aide de différentes versions de la même bibliothèque ajouté avec NuGet. J'ai enlevé toutes les anciennes versions avec NuGet et a ajouté un nouveau titre de référence pour tous.
Team Foundation Server met tous les fichiers DLL dans un répertoire, et il peut seulement être un fichier DLL d'un certain nom à un temps de parcours.
Mon application.config contient un
pour npgsql. En quelque sorte sur la machine de l'utilisateur, l'une de mes applications.exe.config a disparu. Je ne suis pas sûr si c'était un idiot de l'utilisateur, l'installateur glitch, ou wacked anti-virus encore. En remplaçant le fichier a résolu le problème.
Je viens de trouver une autre raison possible pour obtenir cette erreur. J'ai nettoyé mon GAC a partir de toutes les versions d'une bibliothèque spécifique et construit mon projet avec référence à la version spécifique du déploiement avec l'exécutable. Quand je lance le projet, j'ai cette exception à la recherche d'une nouvelle version de la bibliothèque.
La raison en était l'éditeur de stratégie de. Lorsque je l'ai désinstallé de la bibliothèque de versions à partir de GAC j'ai oublié de désinstaller l'éditeur de la politique des assemblages ainsi donc, au lieu d'utiliser mon déployé localement assemblée l'assemblée chargeur trouvé d'éditeur de la politique dans le GAC qui l'a raconté à la recherche d'une version plus récente.
Me la couverture de code de configuration dans le "Local.testtesttings" fichier "provoqué" le problème. J'ai oublié de mettre à jour les fichiers qui ont été référencé il.
Simplement effacer le contenu de votre dossier bin du projet et de reconstruire la solution a résolu mon problème.
nettoyer et reconstruire la solution peut pas remplacer toutes les dll du répertoire de sortie.
ce que je vous suggère, c'est d'essayer de renommer le dossier "bin" à "oldbin" ou "obj" à "oldobj"
et puis essayez de construire votre silution de nouveau.
encas si vous utilisez un tiers dll ceux que vous devez copier dans le nouvellement créé "bin" ou "obj" dossier après la réussite de la construction.
espère que cela fonctionnera pour vous.
Manuellement la suppression de l'ancienne assemblée de l'emplacement du dossier de et puis d'ajouter la référence à de nouveaux assemblages pourrait aider.
J'ai eu le même message d'erreur...
Dans mon cas, il a obtenu réglée comme suit:
Voici ma méthode de résolution de ce problème.
Ok, donc dans cet exemple, mon .dll est certainement 2.0.5022.0 (donc à l'Exception du numéro de version est mauvaise).
Donc, dans cet exemple, je voudrais remplacer cette...
... avec cette...
Travail !
Dans mon cas, le problème est entre la chaise et le clavier 🙂
De deux ou de plusieurs assemblées voulais utiliser une version différente de la DotNetOpenAuth bibliothèque, et qui ne serait pas un problème. En outre, sur mon ordinateur en local un site web.config a été automatiquement mis à jour par NuGet:
Puis j'ai réalisé que j'avais oublié de copier/déployer le nouveau site web.config pour le serveur de production. Donc, si vous avez le manuel de moyen de déployer des web.config, vérifier qu'il est bien mis à jour. Si vous avez complètement différent de web.config pour un serveur de production, vous avez pour fusionner ces dependentAssembly section sync après l'utilisation de NuGet.
Si jamais vous obtenez une erreur comme "L'assemblée manifeste définition ne correspond pas à la référence d'assembly" et si vous avez mis à jour via Projet > Gérer les Packages NuGet et onglet mise à Jour de VS, la première chose que vous pourriez faire est d'essayer d'installer une autre version d'un paquet, après vérification des versions de NuGet page de la Galerie et de l'exécution de l'suivantes de commande de la Console du Gestionnaire de Package:
Bien que la réponse n'est pas directement liée à l'application en question et il a été demandé le chemin du retour, c'est une sorte de générique, toujours d'actualité et j'espère que ça aide quelqu'un.
J'ai reçu ce message d'erreur en raison de la référence à une assemblée qui avait le même nom que l'assemblée j'ai été la construction.
Ce compilé, mais il a remplacé l'assembly référencé avec les projets en cours de montage ainsi l'origine de l'erreur.
Pour le fixer, j'ai changé le nom du projet, et l'assemblée des propriétés disponibles via le bouton droit sur le projet et en choisissant "Propriétés".
Dans votre AssemblyVersion dans AssemblyInfo.cs fichier, utilisez un fixe, le numéro de version au lieu de spécifier *. L' * va changer le numéro de version sur chaque compilation. C'était le problème de cette exception dans mon cas.
J'ai rencontré ce problème lors de l'utilisation d'un module interne de référentiel. J'avais ajouté le paquet principal pour le dépôt interne, mais pas les dépendances du paquet. Assurez-vous d'ajouter toutes les dépendances, les dépendances des dépendances, récursive, etc à votre référentiel interne ainsi.
J'ai eu le même problème aujourd'hui, ce qui m'a empêché d'effectuer Ajoutez-la Migration après j'ai fait des modifications dans le Cadre de l'Entité.
J'ai eu deux projets dans ma solution, appelons-les "Client" et "Données" - un projet de bibliothèque de classes qui a retenu mon EF modèles et le contexte. Le Client référencé le projet de Données.
J'avais signé les deux projets, et puis plus tard, a apporté des modifications à un modèle EF. Après avoir retiré la signature j'ai été en mesure d'ajouter les migrations, et pourrait ensuite signé le projet de nouveau.
J'espère que cela peut être utile pour quelqu'un, lui épargnant de longues frustration..
Cela peut également se produire si vous utilisez les deux AssemblyInfo.cs avec le AssemblyVersion balises et votre .fichier csproj a avec une valeur différente. Soit par correspondance de la AssemblyInfo ou la suppression de la section, tous ensemble, le problème disparaît.
OK, une réponse de plus. J'ai déjà créé mon application 64 bits et changé le chemin de sortie (Projet/Propriétés/Construire/de Sortie/Output Path) en conséquence. Récemment, j'ai changé l'application de 32 Bits (x86), la création d'un nouveau chemin de sortie. J'ai créé un raccourci vers où je pensée la compilation .exe allait. Peu importe ce que j'ai changé sur la source, il a obtenu le manifeste qui ne correspond pas d'erreur. Après environ une heure de frustration, il m'est arrivé de vérifier la date et l'heure de l' .exe fichier, vu qu'il était ancien évidemment le référencement vieux .dll. J'ai été la compilation de l'application dans l'ancien répertoire et mon raccourci faisait référence à la plus récente. Changé le chemin de sortie à où la .exe devrait aller, a couru le raccourci et l'erreur a disparu. (gifles front)
J'ai eu ce problème après avoir commencé à utiliser InstallShield. Même si l'ordre de la génération a montré le projet d'installation de la dernière, c'était la construction de l'ordre.
J'ai corrigé ce par tout autre projet dépend - il forcé l'installation de construire en dernier et donc enlevé mon assemblée de désadaptation. J'espère que cette aide.
La question a déjà une réponse, mais si le problème a eu lieu en package NuGet dans les différentes versions de la même solution, vous pouvez essayer ce qui suit.
Ouvrir le Gestionnaire de Package NuGet, comme vous le voyez mon projet de service version est différente de celle des autres.
Puis mettre à jour des projets qui contiennent une ancienne version de votre colis.
J'ai eu un problème similaire lors de la tentative de mise à jour d'un fichier DLL de mon site web.
Cette erreur était en cours, quand j'ai simplement copié ce fichier DLL dans le dossier bin via FTP.
J'ai résolu ce problème en faisant:
J'ai été confrontée au même problème lors de l'exécution de mon unité de cas de tests.
L'erreur indique clairement le problème: quand nous essayons de nous charger de l'assemblée, l' .NET de l'assemblée chargeur essaie de charger ses visées assemblées en fonction de son manifeste de données (appelé nom de l'assembly, jeton de clé publique, la version).
De vérifier les données du manifeste:
Utility, Version=1.2.0.200
etUtility, Version=1.2.0.203
). En réalité, l'assemblée estUtility, Version=1.2.0.203(new version)
, mais depuis le manifeste contient mêmeUtility, Version=1.2.0.200(old version)
, .NET de l'assemblée chargeur essaie de trouver ce de version de fichier DLL, ne parvient pas à trouver et donc throws exception.Pour résoudre ce problème, il suffit de glisser chacun des projets dépendant assemblées à la ILDASM fenêtre séparément, et vérifiez dépendante de l'assemblée détient les données manifeste avec l'ancienne version de l'assembly. Simplement de reconstruire ce dépendante de l'assemblée et de la renvoyer à votre projet.
Le problème avec moi, c'était qu'il y avait des vieux dll dployed qui ont été supprimés dans une nouvelle construction.
Pour le fixer, j'ai juste coché la case pour supprimer des fichiers supplémentaires à destination lors de la publication.
Supprimer des fichiers supplémentaires à destination
Eu le même problème mentionné dans ce post "des suggestions sur la façon dont je comprendre ce qui est en train d'essayer de référence de cette ancienne version de ce fichier DLL?"
Nécessaire que l'assemblée se réfère encore vieux client ODATA 6.15.0 , le ildasm a permis de préciser pour moi (sans la base de code d'accès, uniquement via déployé pkg sur le serveur).
Capture d'écran ci-dessous pour un résumé rapide.
DeveloperPackge si vous ne disposez pas ildasm.exe
https://www.microsoft.com/net/download/visual-studio-sdks
Cette même erreur a été de surfaçage pour moi dans mes Tests Unitaires projet et entraînant l'échec de tests. J'ai vérifié la version de l'assembly j'ai été en utilisant de l'assemblée de l'explorateur et de vérifier le contenu de la runtime/dependentassembly balises et a réalisé une version différente de l'assemblée, je l'utilisais était encore référencée là. Parce que c'était la seule directive dans mes tests en projet app.config, j'ai juste essayé de la suppression de la totalité de l'app.fichier de configuration, la reconstruction de la solution, et qui a fait le tour! Pas plus d'erreurs de référence pour moi 🙂
J'ai été faire:
C'était parce que j'ai changé le nom de l'assemblée de
XXX.dll
àXXX-new.dll
. Retour nom retour à l'origine correction de l'erreur.vérifiez les licences.licx dans les propriétés du projet, vous trouverez la mauvaise version.... il a travaillé pour moi dans le rapport actif références
Qui m'est arrivé pour
System.ValueTuple
Résolu par l'installation d'
.NET Framework 4.7.2 Runtime
sur la machine, l'erreur s'est produite sur. Simple et pas besoin d'ajouterbindingRedirect
, la modification du GAC ou le déclassement de packages NuGet etc.https://dotnet.microsoft.com/download/dotnet-framework/net472
Essayez d'ajouter ce qui manque pour le global assembly cache.
À droite, cliquez sur la référence dans VS "Version Spécifique" True à la propriété.