listdll не видит загруженные сборки

Я был почти уверен, что среда выполнения.NET загружает сборки как обычные библиотеки DLL. Но я обнаружил, что когда я подключаю "нативный" отладчик к управляемому процессу - я не вижу загруженных сборок.

То же самое относится и к инструменту Sysinternals - listdll. Он видит только загруженные библиотеки, а не сборки.

Интересно, как CLR загружает и выполняет код из сборок? У меня есть инструмент, похожий на listdll, чтобы просмотреть все управляемые процессы и вывести список всех загруженных сборок?

1 ответ

Прежде всего, сборка не является DLL. DLL - это физический файл, а сборка - логическая концепция платформы.NET. Одна DLL может содержать несколько сборок.

Есть много способов перечислить сборки, загруженные процессом, вот некоторые из них:

  1. С помощью SysInternals Process Explorer дважды щелкните процесс и перейдите на вкладку.NET Assemblies.
  2. Используя отладчик, такой как WinDbg/CDB/NTSD, присоедините к целевому процессу, загрузите расширение SOS, введя команду .loadby sos clr, затем введите !DumpDomain команда для отображения сборок, загруженных в каждый домен приложений
  3. С помощью отладчика MDbg присоединитесь к целевому процессу, затем введите команду list assemblies
Другие вопросы по тегам