MCR和.NET不兼容

时间:2010-12-13 12:49:00

标签: .net matlab matlab-deployment matlab-compiler

我正在尝试编译使用.NET模块的Matlab(R2010b)应用程序,但我遇到了MCR和.NET模块之间不兼容的问题:

  • .NET模块使用Visual Studio 2010编译。
  • MCR配置为使用Visual Studio 2010。
  • 该应用程序还包含一些使用Visual Studio 2010构建的Mex文件,它们在Matlab和MCR中都可以正常工作。

如果我从Matlab cli加载程序集一切正常,但是一旦我编译应用程序并从cmd.exe运行它就会抛出一个错误,指出程序集是使用比当前运行时更新的运行时构建的加载。我认为Matlab R2010b是用Visual Studio 2008构建的,并且相信这就是问题,但我想知道是否有人能解决这个问题?

1 个答案:

答案 0 :(得分:7)

解决方案是使用以下条目在编译的exe旁边提供应用程序配置文件(名为foo.exe的应用程序的foo.exe.config):

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
 </configuration>

MATLAB .NET界面是使用.NET framework 2.0构建的,这意味着在没有应用程序配置文件的情况下会加载2.0 CLR。在MATLAB中运行时,配置文件中的<supportedRuntime>条目告诉MATLAB加载4.0 CLR(如果可用)。