从MATLAB发布.NET程序集

我正在开发一个与C#dll库连接的小型MATLAB项目。 MATLAB文档允许您按照此处所述加载程序集: http : //uk.mathworks.com/help/matlab/ref/net.addassembly.html? s_tid = gn_loc_drop和http://uk.mathworks.com/help/ MATLAB / matlab_external /一个组件-是-A-库的净classes.html

我的呼吁如下:

NET.addAssembly('C:\MyLibrary.dll'); 

一切都很好,我甚至可以通过附加到MATLAB过程来调试VS,但是有一个小问题。 没有’removeAssembly’方法可以将程序集与MATLAB进程断开连接。 如果我想在VS中进行更改,我必须重新启动MATLAB来解锁DLL,这实际上是一个痛苦的事情。 我甚至试图使用解锁软件而没有运气.MATLAB冻结。

有谁知道如何处理这个?

卸载组件是不可能的,这是已知的限制之一

您可以使用系统调用和Matlab命令行选项从Matlab本身启动一个新的Matlab实例 。 然后,您可以在新实例中测试.NET库。 在测试后关闭新实例时,将释放.NET库。 通过此解决方法,您无需完全重新打开Matlab。 不要在主Matlab实例中加载.NET程序集。

Windows PC上打开一个新的Matlab实例(整个IDE GUI):

 log_str = '-logfile "C:\Temp\logfile.txt"'; system_str = [ 'matlab.exe -nosplash ' log_str ]; system(system_str); 

通过-r在新的Matlab实例中自动执行m-File,不使用带有-nodesktop的IDE GUI,并在测试后让新实例关闭:

 log_str = '-logfile "C:\Temp\logfile.txt"'; my_file = 'C:\Temp\test.m'; system_str = [ 'matlab.exe -nosplash -nodesktop -r "run(''' my_file '''), pause(2), exit" ' log_str ]; system(system_str); 

日志文件记录Matlab实例的控制台输出。 它是可选的,但对测试很有帮助。 如果您希望子实例是异步的(即将句柄返回到主Matlab实例),则可以在system_str的末尾添加' &'