2 Stimmen

Wie überprüfe ich, ob eine NET-Assembly bereits in Matlab hinzugefügt wurde?

Wie kann ich mit Matlab 2010 und NET.addAssembly(MyName) überprüfen, ob eine bestimmte Assembly MyName bereits hinzugefügt wurde oder nicht?

4voto

shahar_m Punkte 3127

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]

2voto

Yair Altman Punkte 5704

Versuchen Sie isempty(which(MeinName)) zu verwenden - ich glaube, dass wenn MeinName nicht definiert/geladen ist, dann wird dies leer sein (d.h. true), ansonsten nicht (false).

2voto

Joe Shaw Punkte 21

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

0voto

Nathan Donnellan Punkte 573

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')

0voto

Wybird666 Punkte 86

Dies funktioniert:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X