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



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



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



Спасибо!

973   4  

4 ответов:

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

Быстрый поиск поgoogle обнаружил этот постScott Hanselman , который указывает на несколько инструментов, которые могут решить вашу проблему.

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

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

Редактировать: для некурящих программной определение подсказках см. В разделе confusedGeeks ответ :-)

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

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

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

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

Comments

    Ничего не найдено.