混合模式程序集是针对运行时版本“v2.0.50727”构建的,无法在4.0运行时中加载。

4
在命令行执行一个可执行文件后,我出现了以下异常:

"Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information."

通过在互联网上搜索该问题,我发现其中一种解决方法是配置App.Config文件。这在VS2010中有效,但在命令模式下仍会生成相同的错误。那么有没有办法通过使用命令行来解决这个问题,因为生成较新版本的.dll是不可能实现的。谢谢!

你有汇编源代码吗? - Davin Tryon
不是,但它是一个Matlab编译的dll。异常在这行代码中抛出:double[,] values = (double[,])MWNA.ToArray(MWArrayComponent.Real); - Charla
而MWNA对象是此程序集的一个实例。 - Charla
你必须将汇编代码编译为.NET 4版本(引用Matlab汇编)吗? - Davin Tryon
3个回答

8
您可以尝试使用 useLegacyV2RuntimeActivationPolicy="true"。
   <startup useLegacyV2RuntimeActivationPolicy="true">
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>

我也遇到了同样的问题,但情况是第三方应用程序通过接口与我们的应用程序通信,而接口正在调用4.0 DLL。 4.0 DLL引用了一个在v2.0.50727中构建的DLL,而我们没有它的代码。 在实例化v2.0.50727 DLL时,我会收到上述异常。我已尝试了上述解决方案,但没有起作用,请问有什么建议吗? - user2067120
<supportedRuntime version="v2.0.50727"/></startup>也不起作用吗? - Dmitry

5

确保你已经配置了App.config和ProgramName.exe.config文件。

例如:

<configuration>
    <startup>
      <supportedRuntime version="v2.0.50727"/>
   </startup>
 </configuration>

<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> - Aviad Ezra

0

另一个解决方案是重新编译所有你依赖于 .NET 4.0 的混合(C++/CLI)程序集。如果这些程序集是第三方的,则通常不可能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接