我有一个 ASP.NET MVC 4 项目。我引用了一个托管的C ++ dll ,它在内部调用非托管C ++ dll 的方法。问题是我在Visual Studio中调试项目时遇到“无法加载文件或程序集或其中一个依赖项”错误。它无法找到的Dll由非托管C ++ dll 使用。我将所有必需的DLL放在ASP项目的bin目录中。
在WPF项目中一切正常但我在ASP.NET MVC4项目中做同样的事情时遇到错误。启动/调试ASP.NET MVC4项目时出错。
我已经尝试了几乎所有的功能,但不确定为什么会出现这个错误。
想法?
修改 我尝试了Fuslogvw.exe,它正在创建两个输出/日志文件。我对它的输出感到有点困惑
最后说的一个文件
绑定成功。返回汇编 C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET 文件\根\ 9abdb93b \ 4655bb86 \组件\ DL3 \ 5113eba9 \ 008d3984_ccb1cb01 \ Assembly.dll。 日志:程序集在默认的加载上下文中加载。“
在第二个日志中,它说
===预绑定状态信息===
日志:DisplayName = AssemblyName(部分)
警告:提供了部分绑定信息 组装:
警告:程序集名称:AssemblyName |域名ID:2
警告:当只有部分程序集显示名称为时,会发生部分绑定 提供。
警告:这可能导致装订器加载错误的装配 警告:建议提供完全指定的 装配的文字标识,
警告:它由简单的名称,版本,文化和公钥令牌组成 警告:参见白皮书> http://go.microsoft.com/fwlink/?LinkId=109270了解更多信息和 这个问题的常见解决方案 日志:Appbase = file:/// c:/users/haris.hasan/documents/visual studio 2012 /项目/ MvcApplication1 / MvcApplication1 /
日志:初始PrivatePath = c:\ users \ haris.hasan \ documents \ visual studio 2012 \项目\ MvcApplication1 \ MvcApplication1 \ BIN
日志:动态Base = C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET 文件\ ROOT \ 9abdb93b 日志:缓存基础= C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET 文件\ ROOT \ 9abdb93b 日志:AppName = 4655bb86调用程序集:(未知)。 ===警告:找不到匹配的原生图像。
日志:IL程序集从C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET加载 文件\根\ 9abdb93b \ 4655bb86 \组件\ DL3 \ 5113eba9 \ 008d3984_ccb1cb01 \ AssemblyName.dll。
答案 0 :(得分:1)
您是否在x64平台上运行?然后,IIS可能在x64模式下运行,并且根本不加载x86 dll。
您可以通过将相关的IIS应用程序池设置为x86模式(enable32BitAppOnWin64 => true)来测试它,并测试它是否正常工作。
此外,托管DLL和/或C ++ dll的安全设置可能会阻止加载。在C ++ DLL上,请确保“经过身份验证的用户”组至少可以读取它。
答案 1 :(得分:1)
1-可能是因为MS C ++可再发行软件包更新!卸载它们并重新安装。
2-我认为IIS正在路径中创建每个托管dll的卷影副本,但是对于非托管的另一个路径,您必须配置它。感谢link获取更多信息。