le module spécifié est introuvable 0x8007007E

À l'intérieur du constructeur d'un formulaire lorsque je parcourt mon code, une méthode déclarée dans le même formulaire est appelée. Avant de pouvoir entrer dans la méthode, je reçois une exception System.IO.FileNotFoundException avec le message " le module spécifié est introuvable. (Exception de HRESULT: 0x8007007E)". La méthode membre que j'essaie d'entrer est déclarée dangereuse car 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.

Puisque cela ressemble à une DLL problème de dépendance, 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 dependency walker 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.

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

22
demandé sur insipid 2010-01-14 20:38:10

2 réponses

L'erreur se produit lorsque le runtime. Net JIT la méthode dans laquelle vous êtes sur le point d'entrer, car il n'a pas pu trouver l'un des types utilisés par la méthode.

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

15
répondu SLaks 2010-01-14 17:40:21

Exécutez-vous dependency walker en mode 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 est en train de charger au moins, et à partir de là, vous pourriez être en mesure de comprendre quel est le problème.

Mon conseil serait de feu, puis désactiver la journalisation. Arriver au point où l'exception est sur le point de se produire, réactivez la journalisation, passez dans le débogueur afin que l'erreur soit générée, puis désactivez à nouveau la journalisation. Cela vous laissera seulement une petite quantité de journal à traiter, sinon il peut devenir assez lourd assez rapidement.

15
répondu Sam Holder 2012-04-26 19:42:02