Как .NET позволяет исследовать API скомпилированных DLL? - PullRequest
2 голосов
/ 02 октября 2009

Как .NET разрешает API-анализ скомпилированных DLL-библиотек?

Ответы [ 4 ]

7 голосов
/ 02 октября 2009

Поскольку библиотека DLL содержит метаданные обо всех типах, методах и т. Д. Даже фактический код находится в IL, а не в собственном коде.

В основном двоичный файл .NET все еще находится на более высоком уровне, чем собственный двоичный файл, и содержит гораздо больше информации о том, что там находится. Вот что позволяет Reflection работать.

1 голос
/ 02 октября 2009

Я не уверен, что это то, о чем вы спрашиваете, но я могу только порекомендовать бесплатный инструмент .NET Reflector , который позволяет вам исследовать любую скомпилированную сборку .NET.

В настоящее время я использую его гораздо чаще, чем даже опубликованную документацию MSDN, потому что он гораздо быстрее перемещается и более информативен при загрузке.

0 голосов
/ 02 октября 2009

Одно слово: Отражатель

0 голосов
/ 02 октября 2009

Это зависит.

DLL содержит список экспортируемых функций, но им может быть просто присвоен номер, имя или им может быть присвоено искаженное имя C ++. Последний может дать некоторое представление о параметрах функции, но структуры данных, соглашения о вызовах и другие обязательные атрибуты обычно не документируются.

Если это COM DLL, есть вероятность, что она содержит библиотеку типов в качестве ресурса, но это не гарантируется. В этом случае .NET может импортировать библиотеку довольно автоматически.

Библиотека типов также может быть включена в не-COM DLL, но это не распространенная практика.

Если у вас есть скомпилированная DLL, предназначенная для вызова из не-COM, неуправляемой среды, вам нужно будет перевести заголовочные файлы, которые должны быть включены в DLL.

...