I’m looking at code that is new-to-me. I have c++ code in a project called UI, with a number of dependencies, which builds correctly and doesn’t return any errors. In the same solution in Visual Studio 2008, I have created a new C# windows forms project and added a reference to the dll generated by the UI project, and added a “using” statement. What I want to do is raise one of the dialogs that are defined in the UI project, so I have code like
UIDialog uIDialog = new UIDialog();
uIDialog.Show();
which builds.
When I run my project in debug, when it gets to the “new” part, I get the exception above – with no information as to what the missing module is.
Is there any way to find out what the missing module is, without digging through the code in the UI project?
(I’m trying to rephrase this question so that it doesn’t get closed. If someone could give the definitive answer of “No, there isn’t” I’d find that very helpful. Thanks also to those who closed the previous version.)
Edit:
System.IO.FileNotFoundException occurred
Message="The specified module could not be found.
(Exception from HRESULT: 0x8007007E)"
Source="ui"
StackTrace:
at ui.UIDialog.Startup()
at ui.UIDialog..ctor() in c:\..\ui\UIDialog.h:line 61
InnerException:
That’s the problem, there’s no useful information anywhere obvious!
It’s not a 32/64 bit problem – before getting here, I had the typical “BadImageFormatException”, so to get past that I forced everything to be 32bit.
You could use the MSIL Disassembler on the referenced dll and check the manifest for all the dependencies of the dll. The disassembler is part of the Windows SDK tools.
Or there is always DependencyWalker, though I haven’t used it in years.