Wie kann ich mit Matlab 2010 und NET.addAssembly(MyName) überprüfen, ob eine bestimmte Assembly MyName bereits hinzugefügt wurde oder nicht?
Antworten
Zu viele Anzeigen?Ich habe einen Code gefunden der auf hinzugefügte Assembly prüft. Vielleicht kann ich ihn zu etwas ändern wie
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
um zu überprüfen, ob die Assembly in Matlab geladen ist oder nicht.
[bearbeitet]
Das folgende funktioniert in R2013a und sucht nach dem Kurznamen der Assembly:
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
Die normale strcmp-Funktion funktioniert möglicherweise nicht (zumindest bis 2011b), da die FullName-Methode einen viel längeren String zurückgibt. Zum Beispiel:
"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
Ein Ansatz wie dieser könnte besser funktionieren:
regexp(char(asm.FullName),['^', MyName, ','],'once')