【问题标题】:How can I control .NET runtime version that is being used in compiled .NET components?如何控制已编译的 .NET 组件中使用的 .NET 运行时版本?
【发布时间】:2011-12-31 09:37:16
【问题描述】:

我想在 Matlab Builder NE 中编译一些 Matlab 代码。
在这段代码中,我想调用 .NET 程序集,使用 Matlab 内置的能力来使用 .NET 组件:http://www.mathworks.com/help/techdoc/matlab_external/brpb58s-1.html
过程是这样的:

  1. C#调用Matlab编译的.NET DLL
  2. MCR 使用 .NET 程序集做某事(如上所述)
  3. MCR 将答案返回给 C#

这是一个正在编译为 .NET 组件的 Matlab 代码示例,目标是 .NET4

function ver = GetVersion()
    NET.addAssembly('System');
    ver = char(System.Environment.Version.ToString())};
end

但是,当编译这个简单的代码时,通过查看 ver,我意识到它使用的是 .NET 2 而不是 .NET 4。

当我直接从 Matlab 使用它时,我得到的是版本 4。
如何控制已编译 DLL 中的 .NET 运行时版本?

【问题讨论】:

    标签: .net matlab .net-4.0 .net-2.0 matlab-deployment


    【解决方案1】:

    在同一台计算机上?命令“mcc”在目标计算机上创建一个最新支持的版本。您可以选择一个版本。

    刚刚用我的电脑做个测试,用户mcc设置.Net 2.0的版本为编译器

    mcc -W 'dotnet:TestVersion,Version,2.0,private' -d 'C:\Users\HW-WIN7-TEMP\Documents\MATLAB\TestVersion\src' -T 'link:lib' -v 'class{Version:C:\Users\HW-WIN7-TEMP\Documents\MATLAB\GetVersion.m}'
    

    我使用目标版本 3.5 来运行我的 C# 程序。得到相同的结果。

    ver = GetVersion() 版本 = 2.0.50727.5448

    【讨论】:

    • 我确实选择了,并将.NET4作为目标。
    • 是的,它在同一台计算机上。感谢您的回复。
    • 对不起,我的 Matlab 版本是 R2009a,我无法进一步尝试。
    猜你喜欢
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多