“Impossible de charger le fichier ou l'assembly 'XXX.YYY' ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.”
J'ai un .net visual studio solution avec un certain nombre de projets (les bibliothèques de classe et d'une application web).
J'ai fait quelques refractoring qui a déplacé des fichiers entre des projets, créé de nouveaux projets, de supprimer celles qui ne sont pas utilisés et renommé certains projets existants.
La solution appuie sans problème mais quand je lance l'application web, l'exception suivante se produit:
"Impossible de charger le fichier ou l'assembly 'XXX.YYY' ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié."
Le projet appelé XXX.YYY qui a été supprimé dans la refractoring outputed une dll appelée XXX.YYY. Mais ce n'est pas utilisée n'importe où dans l'application. J'ai supprimé les applications web obj répertoire et dossier bin et reconstruire, mais il se produit encore.
N'importe qui ont des idées quand cela pourrait se produire, des conseils??
Mise à JOUR:
Mise à jour sur mon problème. J'ai pris le code endroit à un autre ordinateur et il a couru à partir de là et il a construit et gère avec succès sans que cela se produise. Donc, cela me fait penser que le problème vient de mon PC, plutôt que de la base de code. Peut-être il ya quelque chose de mis en cache sur mon PC. J'ai supprimer mes fichiers temp "C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET les Fichiers" mais pas de chance.
Donc autre chose qui pourrait être mis en cache ou pour toute autre raison qu'il se produise sur mon PC.
NOUVELLE MISE À JOUR
Une autre mise à jour sur ce. J'ai couru le même code sur les autres développeurs de la machine et il n'a pas un problème de fonctionnement. Donc, il doit certainement être quelque chose sur ma machine! La seule différent sur notre machine, c'est que je suis en cours d'exécution IIS7 avec l'app application de la piscine en mode classique. Le développeur est en cours d'exécution IIS6.
2 nouveaux morceaux de l'information. Tout d'abord dans mon httpmodules dans mon web.config, j'ai supprimer un module http personnalisé, avant de l'ajouter. Le développeur n'a pas à le faire. Deuxièmement, j'ai été en mesure de résoudre le "impossible de charger le fichier ou l'assembly 'XXX.YYY' ou une de ses dépendances" question par le biais d'un "hack" qui est seulement une solution rapide à court terme par la création d'une bibliothèque de classe dans mon projet appelé XXX.YYY et y compris les classes recherchées, de l'autre, qui sont tous les contrôles personnalisés ie. héritant du Système.Web.L'INTERFACE utilisateur.Contrôles webcontrols.WebControl.
Toutes les pensées....
Avez-vous essayez de nettoyer votre ASP.NET répertoire des fichiers temporaires? C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Fichiers
essayé de supprimer les fichiers temporaires, mais toujours pas de chance
oui j'ai utilisé un réflecteur sur toutes les dll dans le répertoire bin de mon application web et ne pouvaient trouver aucune référence à XXX.YYY.
OK... maintenant, je suis extrêmement curieux de savoir pourquoi ce qui se passe. 🙂 1) avez-vous un actif anti-virus en cours d'exécution sur les brisées de la machine? Pas de Symantec ou McAfee j'espère. 🙂 Si non, utilisez l'un des réputés de scanners en ligne et de vérifier ensuite votre code de problème de nouveau, si quelque chose est trouvé/réparé. 2) Est-il possible de désinstaller Visual Studio, le .Net runtime qui est touché par ce problème, et puis le réinstaller? Nous avons eu un problème similaire le chemin du retour lorsque la première .Net exécutions ont été libérés et ont trouvé que 2 façons d'arranger les choses. 1 est la méthode que j'ai décrite, 2 est une réinstallation complète de windows, VS, etc...
OriginalL'auteur amateur | 2011-01-01
Vous devez vous connecter pour publier un commentaire.
Il y a deux raisons possibles.
1) Lorsque vous exécutez votre application web, vous devez toujours utiliser les anciennes assemblées de quelque part sur vos machines. Vos anciennes assemblées de référence de l'ancienne assemblée "XXX.YYY".
2) La dernière binaire que vous avez construit est toujours en faisant référence à l'ancien assemblée "XXX.YYY".
Pour savoir ce que les assemblages de votre webapp à l'aide, si vous exécutez un débogueur, vous pouvez facilement la trouver à partir de la sortie de windows. Il doit d'abord être quelques lignes de la sortie. Une autre façon de le savoir est d'ouvrir le Module de windows en VS.NET IDE au cours de débogage.
Si vous ne pouvez pas déboguer pour certaines raisons ou vous avez des problèmes pour attacher un débogueur, un autre moyen plus simple de le faire est d'utiliser fuslogvw. Il vous donne la position exacte de tous les succès chargé assemblis ainsi que les assemblées qu'il n'a pas de charge. Assurez-vous d'exécuter la fuslogvw en tant qu'Administrateur sous Windows 7.
Après vous trouverez ce que les assemblées votre webapp chargé, vous pouvez le faire ildasm sur ces assemblées, pour voir ce que les assemblées qu'ils sont la référence. Vous avez besoin de vérifier un par un, malheureusement.
Ma conjecture est que certains de vos chargée correctement assemblées sont effectivement venir de quelque part dans le ASP.NET cache ou GAC.
Je voulais aussi parler de la fusion logger, mais je ne me souviens pas du nom de l'outil.
OriginalL'auteur Harvey Kwok
il suffit de consulter les projets de configuration de la compilation.. si il y a un 64 bits dll compilée sur vos références et votre projet principal est de 32 bits (ou tout du processeur et de votre machine 32 bits) ou vice versa, vous allez obtenir cette erreur
oui.. c'est le cas avec cette description "impossible de charger le fichier ou l'assembly 'XXX.YYY, Version=1.0.XXX, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances."
OriginalL'auteur Tolgahan Albayrak
Utiliser le Dependency Walker (dépend) sur l'ensemble de vos Exe et Dll afin de voir laquelle est la dépendance qui est manquant. Vous devez exécuter dépend du répertoire de travail de votre projet pour de meilleurs résultats.
Une fois que vous savez qui EXE/DLL est le coupable, allez dans les paramètres du projet et de voir si la se sont plaints au sujet de la dépendance est là.
EDIT: une Autre chose s'est produite pour moi il y a quelques minutes...
Si l'un de vos dépendances sont "bloqués" parce qu'ils ont été marqués comme " téléchargé par certains MS tardware (Lorsque vous DL avec Inet explorer par exemple) qui peuvent empêcher code exécutable à partir de chargement. Regardez les propriétés de vos fichiers exécutables (DLL/EXE) avec l'Explorateur de Windows et voir si ils ont un bouton débloquer sur la première page. Si oui, cliquez sur ce bouton.
Ce qui m'a pris un certain temps pour trouver un moment de retour, j'espère que ça vous aidera.
Dependency Walker décide de la DLL de la dépendance de l'importation et de l'exportation de la table de PE pour autant que je sais. À moins qu'il est l'utilisation de certaines DLL non managée, je ne vois pas comment dependency walker va aider. Est la dernière dependency walker pouvez marcher à travers la référence de l'assemblée de trop?
Collins: Il n'y a pas de bloc option, seuls les débloquer. Si vous ne le voyez pas, vous devriez être OK.
Kwok: j'ai utilisé Dependency Walker dans une situation similaire et les problèmes résolus. Je ne suis pas sûr de savoir comment il fonctionne, mais il a travaillé pour moi.
Voir mise à jour en question
OriginalL'auteur JimR
Activer la journalisation des Diagnostics pour la sortie de la construction (Outils -> Options -> créer Et Exécuter -> Sortie niveau de détail du Journal -> Diagnostic) et de Construire la solution et voir d'où Visual Studio choisit la dll (somedll.dll version xxx.aa). Maintenant, exécutez l'Application et de voir où l'exécution est en essayant de résoudre la dll. (Windbg est une option).
OriginalL'auteur Soundararajan
N'recherche de solution pour le texte "XXX.YYY" et supprimer toutes les occurences. Peut-être que vous avez qqch à gauche dans le web.fichier de configuration.
En outre, vous pouvez vérifier l' *.csproj fichiers si la solution de recherche ne trouve rien. Ils sont essentiellement des fichiers texte, donc il devrait y avoir aucun problème de suppression de références.
OriginalL'auteur dzendras
Vous êtes tout simplement manque une dépendance. C'est probablement une situation comme Projet Un a une référence pour le Projet B qui a une référence à Projet C. Votre répertoire de sortie est manquant DLL pour le Projet C.
Pas nécessairement. Tous les projets sont dans la même solution, de sorte que chaque projet a ses références nécessaires et tous sont construits dans l'ordre nécessaire pour construire les dépendances. Pour une application doit être publiée, aussi longtemps que le dossier bin contient tous les fichiers Dll requis l'application s'exécuter, mais si une seule DLL est manquant, alors vous verrez le problème que vous rencontrez. Êtes-vous à la publication de l'application de IIS ou tout simplement de débogage de VS?
Intéressant. Je suis en cours d'exécution sur mon local IIS7 sur pc windows 7. Est-ce important?
OriginalL'auteur mikesigs
Grande nouvelle, j'ai résolu le problème!!! J'ai dû réinstaller mon .net de l'environnement d'exécution. J'ai aussi supprimé les sites de IIS et readded le site web de nouveau. Quand je l'ai couru, la question ne se produit pas et le site a couru.
Un grand merci à vous tous pour leur aide et de l'assistance, très apprécié. Tous les conseils et aider à me dirigea dans la direction de résoudre ce!
OriginalL'auteur amateur
Aller à
References
dansSolution Explorer
dansVisual Studio
. Sélectionnez l'assemblée qui se plaint. Sélectionnez-la et passez àView
menu et choisissez l'option deProperty Window
au fond. Alors que l'assemblée est sélectionné, afficher ses propriétés dans la fenêtre des propriétés et de regarder pourCopy Local
valeur. Si sa valeur est définie àFalse
, ilTrue
. Construire la solution et de le publier. Il devrait réussir à résoudre le problème.OriginalL'auteur Jogi