我正在尝试编译使用.NET模块的Matlab(R2010b)应用程序,但我遇到了MCR和.NET模块之间不兼容的问题:
如果我从Matlab cli加载程序集一切正常,但是一旦我编译应用程序并从cmd.exe运行它就会抛出一个错误,指出程序集是使用比当前运行时更新的运行时构建的加载。我认为Matlab R2010b是用Visual Studio 2008构建的,并且相信这就是问题,但我想知道是否有人能解决这个问题?
答案 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(如果可用)。