Ne pouvait pas charger le fichier ou l'assemblage ou l'une de ses dépendances
j'ai un autre de ces problèmes "ne pouvait pas charger le fichier ou l'assemblage ou l'une de ses dépendances".
information supplémentaire: ne pouvait pas charger le fichier ou l'assembly "Microsoft.Pratique.Unité, Version = 1.2.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 " ou l'une de ses dépendances. La situé la définition manifeste de l'Assemblée ne correspond pas à la référence de l'assemblage. (Exception de HRESULT: 0x80131040)
Je n'ai aucune idée de ce qui cause ceci ou comment je pourrais le déboguer pour trouver la cause.
j'ai fait une recherche dans Mes catalogues de solutions .les dossiers csproj, et chaque où j'ai Unité j'ai:
référence Include= " Microsoft.Pratique.Unité, Version=2.0.414.0, Culture = neutre, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL "
ne trouve aucune référence contre 1.2.0.0 dans aucun de mes projets.
une idée de comment je dois résoudre ça?
j'apprécierais aussi des conseils sur la façon de déboguer des problèmes comme ça en général.
30 réponses
-
vérifiez si vous faites référence à un assemblage qui à son tour fait référence à une ancienne version de l'unité. Par exemple, disons que vous avez une assemblée appelée
ServiceLocator.dll
qui a besoin d'une ancienne version de l'Assemblée de L'Unité, maintenant quand vous faites référence auServiceLocator
vous devez lui fournir l'ancienne version de L'unité, et cela pose le problème. -
peut être le dossier de sortie où tous les projets construisent leurs assemblages, a un vieux la version de l'unité.
vous pouvez utiliser FusLogVw pour savoir qui charge les anciens assemblages, il suffit de définir un chemin pour le journal, et exécuter votre solution, puis vérifier (dans FusLogvw) la première ligne où l'assemblage unité est chargé, double-cliquez dessus et voir l'assemblage appelant, et voilà.
Ouvrir le Gestionnaire des services internet
Sélectionnez Les Pools D'Applications
sélectionnez ensuite la piscine que vous utilisez
passez à Paramètres avancés (à droite)
changez le drapeau de L'application Enable 32-bit false EN true.
pour moi, aucune des autres solutions n'a fonctionné (y compris la stratégie de nettoyage/reconstruction). J'ai trouvé une autre solution de contournement qui est de fermer et rouvrir Visual Studio .
je suppose que cela force Visual Studio à recharger la solution et tous les projets, en revérifiant les dépendances dans le processus.
essayez de nettoyer les dossiers de débogage et de publication dans votre solution. Puis retirez et ajoutez l'unité à nouveau.
a travaillé pour moi.
- supprimer les fichiers temporaires C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET dossiers
- Fermer VSTS and Open Again
- supprimer et ajouter les mêmes DLLs (Note: vous ajoutez les mêmes versions correspondantes)
Microsoft Enterprise Library (referenced by .NetTiers) était notre problème, qui à son tour faisait référence à une ancienne version de L'Unité. Pour résoudre le problème, nous avons utilisé la redirection de reliure suivante dans le web.config:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.Unity.Configuration" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Alternativement, vous pouvez simplement mettre à jour la Bibliothèque d'Entreprise à la dernière version.
à 99% le ne pouvait pas charger le fichier ou l'assemblage ou l'une de ses dépendances le problème est causé par des dépendances! Je vous suggère de suivre ces étapes:
-
Télécharger Dependency Walker à partir de http://www.dependencywalker.com/
-
Lancement Dependency Walker et ouvrez le fichier dll (dans mon cas
NativeInterfaces.dll
) -
vous pouvez voir une ou plusieurs dll avec l'erreur en rouge fichier D'ouverture D'erreur...
-
cela signifie que cette dll est manquante dans votre système; dans mon cas, le nom de dll est
MSVCR71.DLL
-
vous pouvez télécharger la dll manquante en utilisant le lien de google vers la page de droite (dans mon cas
c:\windows\system32
) -
à ce point, vous devez enregistrer la nouvelle dll dans le Gac (Global Assembly Cache): ouvrez un terminal DOS et écrivez:
cd \Windows\System32 regsvr32 /i msvcr71.dll
-
redémarrez votre application!
en dépit de la question originale a été posté Il ya 5 ans, le problème persiste toujours et est plutôt ennuyeux.
la solution générale est une analyse approfondie de tous les assemblages référencés pour comprendre ce qui ne va pas. Pour faciliter cette tâche, j'ai créé un outil (une extension Visual Studio) qui permet de sélectionner un assemblage .Net (.ddl ou .exe file) et obtenir un graphique de tous les assemblages référencés avec des références contradictoires ou manquées.
l'outil est disponible dans Visual Studio Gallery: https://marketplace.visualstudio.com/vsgallery/051172f3-4b30-4bbc-8da6-d55f70402734
vérifiez sur le Web.config / App.fichier de configuration dans votre projet. Voir si les numéros de version sont corrects.
<bindingRedirect oldVersion="X.X.X.X-X.X.X.X" newVersion="X.X.X.X" />
ça a marché pour moi.
j'ai eu le même problème. ** La réponse de Juntos est correcte * * mais vous devriez noter un conseil important!
pour l'unité 2.1.505.2 différent AssemblyVersion et AssemblyFileVersion sont spécifiés:
AssemblyFileVersion est utilisé par nuget mais CLR ne pas s'en soucier! CLR va utiliser seulement AssemblyVersion !
donc les redirections doivent être appliquées à une version spécifiée dans AssemblyVersion: 2.1.505.0
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>
voir aussi: quelles sont les différences entre AssemblyVersion, Assemblyfilversion et AssemblyInformationalVersion?
dans solution explorer Clic droit sur le projet (pas la solution), dans l'onglet Construire choisir plate-forme cible : "N'importe quel CPU".
- Goto: Solution - > Package "
- cliquez sur avancé onglet (trouver ci-dessous la page)
- ajouter votre dll à des assemblées supplémentaires(de cette façon, nous pouvons ajouter des dlls externes dans sharepoint).
j'ai aussi eu cette terrible erreur et j'ai trouvé une solution pour ça...
- clic droit sur le nom de la Solution
- , Cliquez Sur Nettoyer La Solution
- Redémarrer Visual Studio
- Goto Propriétés du projet >> Construire
- changer Configuration en Release
- Début Du Débogage (F5)
1) , 2)
4) , 5)
espérons que cela vous aidera aussi.
Je ne suis pas sûr que cela puisse aider.
vérifiez que le nom de L'Assemblée et l'espace de noms par défaut dans les Properies de vos asemblies correspondent. Cela a résolu mon problème qui a produit la même erreur.
Thanks Riddhi M. Suite a fonctionné pour moi.
supprimer les fichiers temporaires C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET dossiers Fermer VSTS et ouvrir à nouveau Supprimer et ajouter les mêmes DLLs (Note: vous ajoutez les mêmes versions correspondantes)
dans mon cas dans le dossier bin était une dll non de référence appelée Unity.MVC3, j'ai essayé de rechercher toute référence à cela dans visual studio sans succès, donc ma solution était aussi facile que supprimer cette dll à partir du dossier bin.
vous dites que Vous avez beaucoup de projets dans votre solution ... bien, commence avec un près du haut de l'ordre de construction. Obtenir que de construire et une fois que vous comprenez cela, vous pouvez appliquer le même correctif pour le reste d'entre eux.
Honnêtement, vous avez probablement juste besoin de rafraîchir votre référence. On dirait soit que vous avez mis à jour votre version et que vous n'avez pas mis à jour les références, soit que c'est un problème de chemin relatif si vous gardez votre solution sous contrôle source. Vérifiez vos suppositions, et ajouter à nouveau la référence.
Cette question m'est arrivé où l'un de mes bibliothèques dépendantes a été de compiler une DLL avec "any CPU" lors de la bibliothèque parent m'attendais à une compilation de "x64".
Vous devez supprimer Votre nom.fichier dll à partir de votre dossier de sortie. Nettoyage des dossiers de débogage et de publication. Reconstruire et copier dans le dossier de sortie le fichier dll régénéré.
je "Définir comme Projet de Démarrage" la déchargé/introuvable/bibliothèque de projet.
l'a ensuite déployé.
ça a marché!
je pense qu'il n'a pas pu trouver le .dll parce que ce n'était pas dans l'assemblée au début.
une autre cause possible: assurez-vous que vous n'avez pas accidentellement donné aux deux projets le même nom d'assemblage dans les propriétés du projet.
a travaillé pour moi.
- supprimer les fichiers temporaires C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET dossiers
- puis clic droit sur temporaire Asp.net fichiers>propriétés>sécurité et donner un accès de contrôle total à IIS et à tous les utilisateurs exécutant mon projet
ma solution pour .NET 4.0, en utilisant la bibliothèque D'entreprise 5, était d'ajouter une référence à:
Microsoft.Pratique.Unité.Interception.dll
cherchez des références contradictoires. Même après un nettoyage et une reconstruction, les références contradictoires poseront toujours un problème. Mon problème était entre AForge et Accord. J'ai supprimé les deux références et ajouté de nouveau les références En choisissant de nouveau la référence particulière (en particulier dans mon cas, juste Accord).
pour moi reconstruire le jeu de l'unité sans L'Unité C # Proects Checkmark a fonctionné.
dans mon cas, aucune des réponses proposées n'a fonctionné.
voici ce qui a fonctionné pour moi:
- supprimer la référence
- renommer la DLL
- Importer la référence à nouveau
la deuxième étape était apparemment importante car elle ne fonctionnait pas sans elle.
essayez de vérifier si la propriété" Copy to Local " pour la référence est définie à true et la version spécifique est définie à true. Ceci est pertinent pour les applications dans Visual Studio.
j'ai eu aujourd'hui, et dans mon cas, la question était très étrange:
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0" newVersion="3.1.0.0" />
</dependentAssembly>0.
notez les caractères errants à la fin du XML - d'une façon ou d'une autre ceux qui avaient été déplacés du numéro de version à la fin de ce bloc de XML!
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
changé en Ci-dessus et voilà! Tout a encore fonctionné.
si vous recevez ce message d'erreur en ouvrant une application sur vous windows xp cela signifie d'abord que vous avez installé cette application en raison de son ne fonctionne pas sans Net framework 4 et service pack 3 . vous avez installé les deux et vous obtenez cette erreur donc vous devez réinstaller cette application de nouveau, mais d'abord désinstaller à partir de ajouter et supprimer
si cela ne fonctionne pas s'il vous plaît ne pas abuser de moi . je suis aussi un junior
ok cela peut sembler très stupide, mais voilà comment j'ai résolu le problème après avoir essayé toutes les autres solutions et passer une nuit sur cette chose stupide.
j'ai eu la même erreur avec une DLL manquante dans le dossier Bin. J'ai essayé d'effacer , de récupérer tout sur le serveur de la fondation de L'équipe mais ça n'a pas marché. J'ai eu une copie du dossier Bin de ma machine de bureau-matelocal, et je l'ai remplacé. Il ne fonctionne pas non plus. Enfin, J'ai manuellement FTPed serveur, a obtenu la copie de DLL qui s'est révélé manquant, et puis il a commencé à apparaître que le fichier suivant dans la séquence de la liste des fichiers est manquant.
ainsi, ftped server a obtenu tous les dossiers Bin, remplacé manuellement chaque dossier un par un. (Pas de Ctrl + Tous les et remplacez-la.. J'ai essayé : ça ne fonctionne pas.) Et d'une certaine façon, il a travaillé...