如何指定MATLAB独立EXE使用的.NET版本或避免预加载.NET?
关于MATLAB 2022b打包EXE指定.NET版本的问题
核心结论
目前MATLAB Compiler(mcc命令)没有直接参数可指定打包后EXE使用的.NET版本,也无法让EXE完全不预加载.NET运行时,但可通过打包前的环境配置锁定EXE默认加载的.NET版本。
具体说明
- 无mcc参数直接指定.NET版本:mcc命令本身未提供类似
--dotnet-version的参数来选择打包时的.NET环境,EXE默认加载的.NET版本完全由打包时MATLAB交互会话的当前.NET环境状态决定。 - 打包前切换环境即可锁定版本:若在执行
mcc -v -N -p -m runMyCode.m前,先在MATLAB中运行dotnetenv("core")切换到.NET Core环境,生成的独立EXE会默认加载.NET Core——因为MATLAB独立运行时不支持在同一进程中切换.NET版本,一旦加载某版本就必须重启进程才能更换,所以打包时的环境会被固化到EXE中。 - 无法实现不预加载.NET:MATLAB Compiler生成的独立EXE会自动初始化默认.NET运行时(默认是.NET Framework),没有办法让EXE启动时不加载任何.NET环境,除非代码完全不涉及.NET交互。
可行方案
若需要EXE使用.NET Core,固定流程如下:
- 启动MATLAB 2022b,先执行
dotnetenv("core")确认切换到.NET Core环境; - 执行
mcc -v -N -p -m runMyCode.m完成打包; - 生成的EXE运行时会自动加载.NET Core,无需再执行切换命令。
内容的提问来源于stack exchange,提问作者gaborhodi
相关产品推荐
相关产品推荐

