如何在matlab中删除对.net程序集的引用

我在c#中创建了一个dll。 我在MATLAB中添加了对这个dll的引用,如下所示。 一切正常。 问题是,当我想更新我的dll时,我必须关闭MATLAB,否则我无法重建我的dll,这是相当烦人的。 如何在MATLAB中删除对这个dll的引用 – 我以为会有一行代码来执行此操作?

% add reference to dll cls = NET.addAssembly('C:\MyFolder\MyDllFolder\bin\Debug\MyDll.dll'); % reference my class mycls = MyNameSpace.MyClass(); 

您是否尝试过cls.delete然后再次添加引用?

我似乎记得clear classes也很有用。 对不起,我无法更明确,我没有Matlab方便地设置一个例子。

编辑

看起来我错了,根据这个链接 ,“你无法从MATLAB卸载程序集。”

作为一种解决方法,您可以使用系统调用和Matlab命令行选项从Matlab本身启动一个新的Matlab实例 ,并仅在新实例中加载库。 这在qestion的答案中描述: 从MATLAB发布.NET程序集

如果最重要的是在交换程序集时的停机时间,那么您可以执行此操作而无需加载新的MATLAB实例(这非常慢)。

即使在纯.NET中,也无法从AppDomain卸载程序集。 JIT过程会影响太多的状态 – 来自该程序集的一些代码可以内联到许多其他函数中。 这实际上是首先拥有AppDomainfunction的重要原因之一。

因此,您将需要一个充当包装器的.NET程序集,并且永远不会更改。 它的function是创建一个AppDomain并加载程序集以测试该子AppDomain。 并且,当它发生变化时,要销毁子AppDomain并创建一个新的AppDomain。

它很复杂,但将MATLAB与复杂性隔离开来。