Как сравнить содержимое двух библиотек? - PullRequest
11 голосов
/ 23 июля 2010

Я бы хотел сравнить несколько dll одной установки с несколькими dll другой установки приложения, с которым я работаю.Я должен убедиться, что они точно такие же.Как сравнить две библиотеки DLL, чтобы убедиться, что они имеют одинаковые методы, свойства, версию и т. Д.ТАК выстрел, посмотри, был ли кто-нибудь еще в моей ситуации и нашел быстрое решение.

Спасибо!

Ответы [ 4 ]

7 голосов
/ 23 июля 2010

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

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

3 голосов
/ 23 июля 2010

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

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

3 голосов
/ 23 июля 2010

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

2 голосов
/ 23 июля 2010

Редактировать: Советы по непрограммному определению см. В ответе confusedGeeks: -)

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

Если ABI не отражен в версии, выполните вторичную md5sum для файлов или проведите рефлексивное сравнение двух сборок.Конечно, md5sum «ловит» внутренние изменения / изменения компиляции, даже если ABI не изменяется.Отражение ABI, хотя и более сложное и потенциально медленное, может определить изменения ABI на месте.

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

...