В .Net я хотел бы перечислить все загруженные сборки по всем доменам приложений. Сделать это для AppDomain моей программы достаточно просто AppDomain.CurrentDomain.GetAssemblies()
. Нужно ли мне каким-то образом получать доступ к каждому домену приложений? Или уже есть инструмент, который это делает?
c#
.net
assemblies
Абтин Форузанде
источник
источник
GetAssemblies()
это не сработает, так как оно не рекурсивно и будет пропускать любые ссылки на вложенные сборки. Я добавил рекурсивную версиюGetAssemblies()
на stackoverflow.com/questions/383686/… .AppDomain.CurrentDomain.GetAssemblies()
все в порядке. Ему не нужно рекурсивно обходить ссылки, потому что он в первую очередь не перечисляет ссылки.Ответы:
Использование Visual Studio
Это дает подробную информацию о каждой сборке, домене приложения и имеет несколько вариантов загрузки символов (например, pdb-файлы, содержащие отладочную информацию).
Использование Process Explorer
Если вам нужен внешний инструмент, вы можете использовать Process Explorer (бесплатное программное обеспечение, опубликованное Microsoft)
Щелкните процесс, и он покажет список со всеми используемыми сборками. Инструмент довольно хорош, поскольку показывает другую информацию, такую как дескрипторы файлов и т. Д.
Программно
Отметьте этот вопрос SO, который объясняет, как это сделать.
источник
Вот что у меня получилось. Это список всех свойств и методов, и я перечислил все параметры для каждого метода. Мне не удалось получить все ценности.
источник
foreach(Type type in asm.GetTypes()){ if ((type.ToString().IndexOf("ACLASSIMLOOKINGFOR")>=0) || (type.ToString().IndexOf("BCLASSIMLOOKINGFOR")>=0)){...