Как сравнить содержимое двух библиотек DLL?

Я хотел бы сравнить несколько библиотек одной установки с несколькими библиотеками другой установки приложения, с которым я работаю. Мне нужно убедиться, что они точно такие же. Как сравнить две библиотеки DLL, чтобы убедиться, что они имеют одинаковые методы, свойства, версию и т. д.?

Я начал использовать Redgate .Net Reflector, но задача стала утомительной, поэтому я подумал, что дам такой шанс, посмотрим, был ли кто-нибудь еще в моей ситуации раньше и имеет быстрое решение.

спасибо ты!

4 ответов


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

быстрый поиск по google нашел этот пост Скотт Хансельман, что указывает на несколько инструментов, которые могут решить вашу проблему.


Почему бы не использовать Dependency Walker? Скопируйте все экспортированные функции в текстовый файл. Повторите то же самое с другой DLL. После сравнения двух текстовых файлов.

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


изменить: для подсказок не программного определения см. ответ confusedGeeks: -)

Я бы использовал сборку SN для определения "версии", тогда;

Если ABI не отражается в версии, выполните вторичный md5sum для файлов или выполните зеркальное сравнение двух сборок. Md5sum, конечно, "поймает" внутренние / компиляционные изменения, даже если ABI не изменится. Отражение ABI, в то время как более сложный и потенциально собака-медленная, может определить изменения ABI spot-on.

Это может быть просто проще и достаточно просто "перезаписать" любую сборку с той же версией (и пусть предыдущие/более поздние версии остаются до тех пор, пока их не удалит тот, кто их поставил).


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