W .Net chciałbym wyliczyć wszystkie załadowane zestawy we wszystkich domenach AppDomains. Zrobienie tego dla domeny AppDomain mojego programu jest dość łatwe AppDomain.CurrentDomain.GetAssemblies()
. Czy muszę w jakiś sposób uzyskać dostęp do każdej domeny AppDomain? A może jest już narzędzie, które to robi?
c#
.net
assemblies
Abtin Forouzandeh
źródło
źródło
GetAssemblies()
to nie zadziała, ponieważ nie jest cykliczne i spowoduje pominięcie jakichkolwiek zagnieżdżonych odwołań do zestawu. Dodałem rekurencyjną wersję stronyGetAssemblies()
na stackoverflow.com/questions/383686/… .AppDomain.CurrentDomain.GetAssemblies()
porządku. Nie musi rekurencyjnie chodzić po referencjach, ponieważ w pierwszej kolejności nie wylicza referencji.Odpowiedzi:
Korzystanie z programu Visual Studio
Daje to szczegółowe informacje o każdym zestawie, domenie aplikacji i ma kilka opcji ładowania symboli (tj. Plików pdb, które zawierają informacje o debugowaniu).
Korzystanie z Process Explorer
Jeśli chcesz mieć zewnętrzne narzędzie, możesz użyć Process Explorer (darmowy, opublikowany przez Microsoft)
Kliknij proces, aby wyświetlić listę wszystkich użytych zespołów. Narzędzie jest całkiem dobre, ponieważ pokazuje inne informacje, takie jak uchwyty plików itp.
Programowo
Sprawdź to pytanie SO, które wyjaśnia, jak to zrobić.
źródło
Oto, z czym skończyłem. Jest to lista wszystkich właściwości i metod, a ja wymieniłem wszystkie parametry dla każdej metody. Nie udało mi się uzyskać wszystkich wartości.
źródło
foreach(Type type in asm.GetTypes()){ if ((type.ToString().IndexOf("ACLASSIMLOOKINGFOR")>=0) || (type.ToString().IndexOf("BCLASSIMLOOKINGFOR")>=0)){...