Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何检查Matlab中是否已经添加了网络组件?_.net_Matlab - Fatal编程技术网

.net 如何检查Matlab中是否已经添加了网络组件?

.net 如何检查Matlab中是否已经添加了网络组件?,.net,matlab,.net,Matlab,使用Matlab2010和NET.addAssembly(MyName),我如何检查某些程序集MyName是否已经添加?尝试使用isempty(which(MyName))-我相信如果没有定义/加载MyName,那么它将是空的(即true),否则不会(false)。我找到了一个代码 也许我可以把它改成 function flag = IsAssemblyAdded( MyName ) domain = System.AppDomain.CurrentDomain; assemblies = d

使用Matlab2010和NET.addAssembly(MyName),我如何检查某些程序集MyName是否已经添加?

尝试使用
isempty(which(MyName))
-我相信如果没有定义/加载MyName,那么它将是空的(即true),否则不会(false)。

我找到了一个代码 也许我可以把它改成

function flag = IsAssemblyAdded( MyName )

domain = System.AppDomain.CurrentDomain;
assemblies = domain.GetAssemblies;
flag = false;

for i= 1:assemblies.Length

    asm = assemblies.Get(i-1);    
    disp(char(asm.FullName));
    if strcmpi(asm.FullName, MyName)
        flag = true;
    end

end
用于检查程序集是否加载到matlab


[已编辑]

由于FullName方法将返回更长的字符串,因此Straight strcmp可能不起作用(至少从2011b开始)。例如:

“mscorlib,版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089”

类似的方法可能会更好:

regexp(char(asm.FullName),['^',MyName',',']','once')
这项功能:

asm = System.AppDomain.CurrentDomain.GetAssemblies;
any(arrayfun(@(n) strncmpi(char(asm.Get(n-1).FullName), MyName, length(MyName)), 1:asm.Length))

以下代码适用于R2013a并查找程序集短名称:

function loaded = IsAssemblyAdded( MyName )

assembiles = System.AppDomain.CurrentDomain.GetAssemblies;
loaded = false;
i = 0;
while (i < assembiles.Length && ~loaded)
    loaded = strcmp(char(assembiles.Get(i).GetName.Name), MyName);
    i = i + 1;
end
function-load=IsAssemblyAdded(MyName)
assembiles=System.AppDomain.CurrentDomain.GetAssemblies;
加载=错误;
i=0;
而(i
不确定,但您可以尝试
exist()
它适用于Java类,所以我希望它也适用于。我已经在多个版本中尝试过('MyName'、'MyName.dll'、'c:\Full\MyName.dll'),但不起作用。即使在加载.net程序集之后,我仍然会得到空(true)值。如果我测试程序集中存在的某个内容(结构、类、方法等),则此方法对我有效。例如
isempty(which('MyCompany.MyProduct.MyClass'))
只有当被测试的程序集是最后一个时,这才有效。否则,加载的
将再次变为
false
。如果已加载,则应具有
;打破在您的while中结束
语句