我有一个包含三个项目的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的组合?
答案 0 :(得分:3)
问题很简单,编译器无法确定原生c ++库的位置。
所以,有几种方法可以解决这个问题。
path
环境变量设置为其位置。http://blogs.msdn.com/b/jorman/archive/2007/08/31/loading-c-assemblies-in-asp-net.aspx
除此之外没有真正的答案。