在MVC应用程序中使用VC ++ dll时出现BadImageFormatException或TypeInitializationException

时间:2017-07-19 09:09:46

标签: c# c++ .net asp.net-mvc asp.net-mvc-4

我有一个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程序

     

附加信息:''的类型初始值设定项扔了一个   异常。

我尝试了许多线索和错误但没有奏效。

1 个答案:

答案 0 :(得分:0)

嗯,AFAIK你有两个选择:

1.您可以将您的mvc应用程序构建到x86。它将在x64上运行,它不会使用x64架构所能提供的所有功能。

2.您可以在x86计算机上运行您的应用程序。这也有效 拥有" true"的唯一方法AnyCpu应用程序将为AnyCpu构建所有dll。它非常讨厌而且不直观,而且随着时间的推移我经历了很多,但这是现实。我仍然确定有一个我不了解的更好的解决方案,即使我花了相当多的时间寻找它并且什么都没找到