编译ASP.NET项目时不明确的异常

时间:2009-11-17 20:42:33

标签: c# .net asp.net visual-studio interop

我有一个asp.net应用程序,有许多引用的dll 现在看来,在编译项目时,我不断收到这个错误:

   The specified module could not be found. Exception from HRESULT: 0x8007007E

我看到被引用的其中一个dll是interop.dll,我怀疑这一点 错误来自interop.dll需要一些不是的本地资源这一事实 在系统上注册。(如果我错了请纠正我)

无论如何我可以找出那个资源(exe,dll,activex,..)是什么?

2 个答案:

答案 0 :(得分:1)

谷歌给了我有趣的结果: http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/6793785a-ec98-4453-a62b-f1a85195ec05

基本上,它表示您可以使用Dependency Walker来检查您需要哪些dll。

我真的建议在Google上搜索更多内容。有很多网页讨论类似的问题。

答案 1 :(得分:0)

您可以使用.Net Reflector(来自Redgate Software,以前的Lutz Roeder的Reflector)来追踪依赖性问题。这不是自动的,但它在过去对我有用。

  1. 在Reflector中打开您认为引用缺少依赖项的应用程序的dll或exe。你可能想要从你提到的interop.dll开始。
  2. 右键单击Reflector中的dll,然后选择Disassemble。
  3. 逐个单击每个类型,然后查找ComImport和TypeLibType属性,这些属性指定所引用的任何外部COM类型的GUID。
  4. 打开注册表,然后在HKEY_CLASSES_ROOT中搜索GUID。您应该能够遇到与GUID匹配的接口,以及包含另一个GUID的TypeLib子键。
  5. 现在使用TypeLib GUID搜索HKEY_CLASSES_ROOT。您应该找到与InProcServer32子项匹配,该子项包含COM dll或exe的路径。
  6. 如果您没有找到任何匹配项,那么某处就会丢失某些内容。只需浏览Reflector就可以为您提供一些线索,帮助您找出遗失的内容。

    或者,如果您确实找到了匹配项,您可能会遇到未正确安装的SDK,或者可能有其他可能需要手动注册的随附DLL(使用regsvr32)。

    希望这有帮助(并且有意义)。