2010-01-14 8 views
22

À l'intérieur du constructeur d'un formulaire lorsque je passe à travers mon code, une méthode déclarée dans la même forme est appelée. Avant de pouvoir entrer dans la méthode, j'obtiens une exception System.IO.FileNotFoundException avec le message "Le module spécifié est introuvable. (Exception de HRESULT: 0x8007007E)". La méthode de membre que j'essaie d'entrer est déclarée dangereuse parce qu'elle traite du code C++ non géré, mais comme je l'ai dit, je ne peux jamais entrer dans la méthode de toute façon. Comme il ressemble à un problème de dépendance DLL, j'ai couru Dependency Walker. Dependency Walker ne montre que des problèmes avec MPR.DLL sous SHLWAPI.DLL. La méthode de problème est WNetRestoreConnectionA que je n'appelle jamais. La FAQ de walker de dépendance suggère que ce n'est pas un problème http://dependencywalker.com/faq.html. En outre, ce n'est pas une application Web ou quoi que ce soit. Je suis malheureusement coincé avec VS2005.le module spécifié est introuvable 0x8007007E

Quelles sont les causes possibles de ce problème? Des idées sur ce que je pourrais manquer ou comment je pourrais déboguer ce problème?

Répondre

15

L'erreur survient lorsque le .NET runtime exécute la méthode que vous êtes sur le point d'utiliser, car il n'a pas pu trouver l'un des types utilisés par la méthode.

Que fait exactement la méthode que vous ne pouvez pas faire, et quels types/méthodes utilise-t-elle?

+0

Excellente réponse, cela semble être le problème. Il y a une classe qui essaye d'utiliser à partir d'une DLL C++ managée qu'elle s'attend à être dans le dossier release mais ce n'est pas là. Question secondaire, comment se fait-il quand je clique pour aller à la définition sur la classe Je vais dans ce répertoire fou C: \ [PROFIL] \ LOCALS ~ 1 \ Temp \ 3292 $ [DLLNAME] $ v2.0.50727 \ [CLASS_NAME] et les signatures des membres sont tous là. Je voudrais vous +1 parce que c'est mieux que ce que Google m'a donné, mais pas de représentant. – insipid

+4

+1 puisque je peux le faire maintenant :) – insipid

15

Exécutez-vous un dépendant de dépendances en mode de profilage ou simplement une analyse statique? Le mode de profilage est ce dont vous avez besoin pour cela, je pense. Mais il y a de meilleures solutions, je crois.

Vous pouvez essayer SysInternals ProcMon. Cela vous permettra de voir quel fichier il essaie de charger au moins, et à partir de là, vous pourrez peut-être comprendre quel est le problème.

Mon conseil serait de l'allumer, puis de désactiver la journalisation. Atteindre le point où l'exception est sur le point de se produire, réactiver la journalisation, passer au-dessus du débogueur afin que l'erreur soit générée, puis désactiver de nouveau la journalisation. Cela vous laissera avec seulement une petite quantité de log à traiter, sinon il peut devenir assez lourdement assez rapidement.

+0

J'ai rencontré le même problème en essayant d'exécuter un assemblage en mode mixte, compilé en débogage, sur une machine nouvellement installée. J'ai utilisé ProcMon avec succès pour comprendre le besoin de la version DEBUG des bibliothèques d'exécution. –

+5

J'ai blogué sur l'utilisation de ProcessMonitor pour le problème de dépendance de l'assemblage en mode mixte problème ici http://www.sivachandran.in/2013/03/troubleshooting-module-could-not-be.html, J'espère que cela aide. – Sivachandran

Questions connexes