Как вывести список всех загруженных сборок?
В.Net я бы хотел перечислить все загруженные сборки по всем доменам приложений. Сделать это для AppDomain моей программы достаточно просто AppDomain.CurrentDomain.GetAssemblies()
, Нужно ли как-то получить доступ к каждому домену приложений? Или уже есть инструмент, который делает это?
3 ответа
Использование Visual Studio
- Присоединить отладчик к процессу (например, начать с отладки или Отладка> Присоединить к процессу)
- Во время отладки откройте окно "Модули" ("Отладка"> "Windows"> "Модули").
Это дает подробную информацию о каждой сборке, домене приложения и имеет несколько опций для загрузки символов (т.е. файлов pdb, которые содержат отладочную информацию).
Использование Process Explorer
Если вам нужен внешний инструмент, вы можете использовать Process Explorer (бесплатное программное обеспечение, опубликованное Microsoft).
Нажмите на процесс, и он покажет список всех используемых сборок. Инструмент довольно хорош, так как показывает другую информацию, такую как дескрипторы файлов и т. Д.
Программный
Проверьте этот вопрос, который объясняет, как это сделать.
Вот чем я закончил. Это список всех свойств и методов, и я перечислил все параметры для каждого метода. Мне не удалось получить все значения.
foreach(System.Reflection.AssemblyName an in System.Reflection.Assembly.GetExecutingAssembly().GetReferencedAssemblies()){
System.Reflection.Assembly asm = System.Reflection.Assembly.Load(an.ToString());
foreach(Type type in asm.GetTypes()){
//PROPERTIES
foreach (System.Reflection.PropertyInfo property in type.GetProperties()){
if (property.CanRead){
Response.Write("<br>" + an.ToString() + "." + type.ToString() + "." + property.Name);
}
}
//METHODS
var methods = type.GetMethods();
foreach (System.Reflection.MethodInfo method in methods){
Response.Write("<br><b>" + an.ToString() + "." + type.ToString() + "." + method.Name + "</b>");
foreach (System.Reflection.ParameterInfo param in method.GetParameters())
{
Response.Write("<br><i>Param=" + param.Name.ToString());
Response.Write("<br> Type=" + param.ParameterType.ToString());
Response.Write("<br> Position=" + param.Position.ToString());
Response.Write("<br> Optional=" + param.IsOptional.ToString() + "</i>");
}
}
}
}
Использование командной строкиcmd.exe
вам просто нужно ввести
tasklist /M
в консоли, и он перечислит весь процесс со всемиdll
загружается процессом. Если в консоли все пошло слишком быстро, вы можете скопировать его в буфер обмена как
tasklist /M |clip
и вставить в блокнот.