在Visual Studio 2008中调试ASP.NET Web服务,C ++ / CLI DLL和本机DLL

时间:2013-01-03 17:15:31

标签: asp.net visual-studio visual-studio-2008 visual-studio-debugging

我有一个包含三个项目的VS2008解决方案:C#ASP.NET Web服务,它使用C ++ / CLI DLL,后者又调用本机C ++ DLL的函数。所有引用都已正确设置。在Web服务bin文件夹中有三个DLL。问题是,当我点击F5时,浏览器中的页面会通知HRESULT 0x8007007E中的FileNotFoundException无法找到指定的模块

缺少的模块是我的本机DLL。 ASP.NET Development Server在%USERPROFILE%\AppData\Local\Temp\Temporary ASP.NET Files\root中的某处复制(并使用)我的C ++ / CLI DLL,但不复制本地的。如果我使用C ++ / CLI DLL手动将本机DLL复制到同一文件夹,那么我可以调试我的Web服务。但是,这种复制似乎并不正确。

在PATH上的某处复制本机DLL也感觉不对,因为其他开发人员需要记住它。

此处有一个similar question,并且在一个答案中链接了blog post。给定的解决方案要求我将DLL更改为延迟加载,这似乎是一个半生不熟的解决方法,因为它需要根据开发障碍更改最终产品。

是否有正确的方法来调试Web服务,C ++ CLI DLL和本机DLL的组合?

1 个答案:

答案 0 :(得分:3)

问题很简单,编译器无法确定原生c ++库的位置。

所以,有几种方法可以解决这个问题。

  1. 使用DLLImport在运行时使用相对路径或绝对路径加载dll。
  2. path环境变量设置为其位置。
  3. 让项目的构建变得非常复杂(请参阅下面的链接,您显然已经阅读过了。)
  4. http://blogs.msdn.com/b/jorman/archive/2007/08/31/loading-c-assemblies-in-asp-net.aspx

    除此之外没有真正的答案。