【发布时间】:2017-10-26 12:03:13
【问题描述】:
在使用 native dll 对 asp.net web 项目 的依赖并在 VS2015 中使用 IIS express 进行调试时,我感到害怕:
无法加载文件或程序集“XXX.DLL”或其依赖项之一。找不到指定的模块。
说明:在执行当前网络请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.IO.FileNotFoundException:无法加载文件或程序集“XXX.DLL”或其依赖项之一。找不到指定的模块。
但是相同的依赖项在同一台机器上的简单表单应用程序中工作正常 - 因此我假设所有依赖项和共同依赖项都存在
或许你有一些线索,这怎么可能?
我已经尝试过的:
- 将所有潜在的依赖项放在 Web 项目输出文件夹中
- 将所有潜在的依赖项放在 /system32/ 路径中
- 将所有潜在的依赖项放在 /system32/inetsrv 和 /sysWOW64/inetsrv 中
- 安装 c++ 可再发行组件(2010、2012、2013)
- 我“解锁”了 dll,因为它们“来自另一台计算机”(CASpol)
- dependency walker 没有给出任何明确的结果
- 过程监视器没有给出任何明确的结果
一些细节:
VS2015 社区,在带有 Windows Server 2012(测试系统)的 Azure VM 上运行,全新安装
该应用程序使用 CGAL 和 BOOST 库 (c++)。
“依赖树”如下:C#包装器引用了一个CLR C++项目,该项目又引用了本机C++(只有这个使用CGAL/Boost);
然后在表单应用程序(有效)或 asp.net Web 应用程序(无效)中使用 C# 包装器;
将 Cgal dll(大约 6 个文件)放入 bin 输出文件夹足以运行表单应用程序。
PS:当然,在我的 2 台开发机器(Win 7、Win 10)上,asp.net 项目运行顺畅——但这些包含大型 c++ 的专用安装参考文献。
PPS:由于外部原因,我目前确实更喜欢使用iis express。我必须在开发环境中模拟在干净的 Win10 笔记本电脑上部署应用程序,外部安装最少
PPPS 看来 win10 开发机器根本不工作 - 编辑:这是关键线索,请参阅下面的答案和Ho do I reference native files in IIS express?
我现在有点卡住了,谢谢。
【问题讨论】:
-
2个思路:(1)你能不能在故障发生前对web服务器进程进行调试,并可能得到更多信息。 (2) 将其剥离回存根实现并重新添加代码直到它中断。
标签: c# c++ asp.net .net dependencies