the specified module could not be found 0x8007007E

2019-01-17 20:37发布

问题:

Inside the constructor of a Form when I am stepping through my code, a method declared in the very same form is called. Before I can step inside the method, I get a System.IO.FileNotFoundException with message "The specified module could not be found. (Exception from HRESULT: 0x8007007E)". The member method I try to enter is declared unsafe because it deals with unmanaged C++ code, but like I said I can never step into the method anyways.

Since it sounds like a DLL dependency issue, I ran Dependency Walker. Dependency walker only shows problems with MPR.DLL under SHLWAPI.DLL. The problem method is WNetRestoreConnectionA which I never call. The dependency walker FAQ suggests that this is not a problem http://dependencywalker.com/faq.html. Also, this is not a web application or anything. I am unfortunately stuck with VS2005.

What are some possible reasons for this problem to occur? Any ideas on what I could be missing or how I could debug this problem?

回答1:

The error is occurring when the .Net runtime JITs the method you're about to step into, because it couldn't find one of the types used by the method.

What exactly does the method that you can't step into do, and what types / methods does it use?



回答2:

Are you running dependency walker in profiling mode, or just static analysis? Profiling mode is what you need for this I think. But there are better solutions I believe.

You could try SysInternals ProcMon. This will allow you to see what file it is trying to load at least, and from there you might be able to figure out what the problem is.

My advice would be to fire it up, then turn off logging. Get to the point where the exception is about to happen, reenable logging, step over in the debugger so the error is generated, then disable logging again. This will leave you with only a small amount of log to deal with, otherwise it can get quite unwieldly quite quickly.