我有一个MVC应用程序,它指的是另一个项目(B),它是一个x86项目有一个Vc ++ dll引用。
当我尝试将B项目作为启动项目作为控制台应用程序运行时,它正在正常运行。
但是当我从MVC应用程序访问它时,我得到BadImageFormatException或TypeInitializationException。
我使用了装配跟踪,并逐渐从每个地方获得例外
抛出BinaryAssemblyInfo异常: ' System.Runtime.Serialization.SerializationException'在mscorlib.dll中
其他信息:无法找到程序集' NI.Framework.Logger, Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b98c50443551b471'。
RealProxy.cs
' System.Runtime.Serialization.SerializationException'在mscorlib.dll中
其他信息:无法找到程序集' NI.Framework.Logger, Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b98c50443551b471'。
抛出异常:' .ModuleLoadException'在 MsgComWrapper_4.0.dll其他信息:C ++模块失败 尝试初始化默认appdomain时加载。
操作方法dispatcher.cs:抛出异常: ' System.TypeInitializationException'在System.Web.Mvc.dll
中附加信息:''的类型初始值设定项扔了一个 异常。
AsyncControllerActionInvokers.cs
抛出异常:' System.TypeInitializationException'在 System.Web.Mvc.dll程序
附加信息:''的类型初始值设定项扔了一个 异常。
我尝试了许多线索和错误但没有奏效。
答案 0 :(得分:0)
嗯,AFAIK你有两个选择:
1.您可以将您的mvc应用程序构建到x86。它将在x64上运行,它不会使用x64架构所能提供的所有功能。
2.您可以在x86计算机上运行您的应用程序。这也有效
拥有" true"的唯一方法AnyCpu应用程序将为AnyCpu构建所有dll。它非常讨厌而且不直观,而且随着时间的推移我经历了很多,但这是现实。我仍然确定有一个我不了解的更好的解决方案,即使我花了相当多的时间寻找它并且什么都没找到