首页 文章

MCR和.NET不兼容

提问于
浏览
8

我正在尝试编译使用.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 回答

  • 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(如果可用) .

相关问题