In .Net möchte ich alle geladenen Assemblys über alle AppDomains auflisten. Es ist einfach genug, dies für die AppDomain meines Programms zu tun AppDomain.CurrentDomain.GetAssemblies()
. Muss ich irgendwie auf jede AppDomain zugreifen? Oder gibt es dafür bereits ein Tool?
c#
.net
assemblies
Abtin Forouzandeh
quelle
quelle
GetAssemblies()
nicht funktioniert, da es nicht rekursiv ist und keine verschachtelten Assemblyreferenzen fehlen. Ich habe eine rekursive Version vonGetAssemblies()
unter stackoverflow.com/questions/383686/… hinzugefügt .AppDomain.CurrentDomain.GetAssemblies()
ist vollkommen in Ordnung. Referenzen müssen nicht rekursiv durchlaufen werden, da Referenzen überhaupt nicht aufgelistet werden.Antworten:
Verwenden von Visual Studio
Dies gibt Details zu jeder Assembly, App-Domäne und bietet einige Optionen zum Laden von Symbolen (dh PDF-Dateien, die Debug-Informationen enthalten).
Prozess-Explorer verwenden
Wenn Sie ein externes Tool benötigen, können Sie den Process Explorer (Freeware, veröffentlicht von Microsoft) verwenden.
Klicken Sie auf einen Prozess und es wird eine Liste mit allen verwendeten Assemblys angezeigt. Das Tool ist ziemlich gut, da es andere Informationen wie Dateihandles usw. anzeigt.
Programmatisch
Überprüfen Sie diese SO- Frage, die erklärt, wie es geht.
quelle
Hier ist, was ich am Ende hatte. Es ist eine Auflistung aller Eigenschaften und Methoden, und ich habe alle Parameter für jede Methode aufgelistet. Es ist mir nicht gelungen, alle Werte zu erreichen.
quelle
foreach(Type type in asm.GetTypes()){ if ((type.ToString().IndexOf("ACLASSIMLOOKINGFOR")>=0) || (type.ToString().IndexOf("BCLASSIMLOOKINGFOR")>=0)){...