Инструмент для сравнения.библиотеки DLL и разбирать различия? [закрытый]


Кто-нибудь знает приличный инструмент, который будет сравнивать две разные версии одной и той же dll и извлекать различия?

Спасибо

6 22

6 ответов:

Отражатель имеет инструментDiff . Примечание: отражатель теперь платное программное обеспечение.

DotPeek из JetBrains также может быть использован. Это также бесплатно.

  • Откройте сборку в dotPeek
  • выберите сборку
  • File -- > Export to project
  • выберите место на диске

Повторите вышеописанное для сборки, которую вы хотите сравнить,затем откройте две папки в инструменте diff. Я использовалWinMerge .

Вы заметите, что подавляющее большинство файлов имеют различия. Это потому, что файлы имеют комментарий в верхней части вот так
// MVID: {some guid here}

Вы можете создать фильтр в WinMerge, чтобы игнорировать его

  • Инструменты -- > Фильтр...
  • перейти на вкладку "фильтры линий"
  • добавьте следующий фильтр ^// MVID:

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

Почему бы сначала не разобрать, а затем сравнить?

Используйте .NET Reflector (Бесплатная версия-это все, что вам нужно), чтобы открыть библиотеки DLL, затем щелкните правой кнопкой мыши и выберите экспортировать их в отдельные каталоги.

Затем используйте ExamDiff Pro Для сравнения каталогов (вы можете получить 30-дневную бесплатную пробную версию). Вы можете перемещаться по вложенным папкам и открывать каждый файл по мере необходимости в новом окне сравнения (просто дважды щелкните в окне ExamDiff Pro). работает потрясающе!

ExamDiff Pro также имеет плагин Dump PE32, который сделаем сравнение непосредственно между ними .dll И.файл EXE. Это полезно, чтобы посмотреть на изменения заголовка и флаги бинарных различий, но не будет декомпилировать его для вас (так что используйте метод рефлектора выше).

У команды Microsoft BCL есть инструмент для этого, он называется LibCheck и может быть найден здесь

Http://blogs.msdn.com/b/bclteam/archive/2005/03/21/400123.aspx

Это старый инструмент, и мне пришлось перекомпилировать исходный код, используя более позднюю версию среды выполнения, но он хорошо работает и предоставляет html-отчеты об изменениях.