Инструмент для сравнения .dll и выявления различий?[закрыто]
-
09-09-2019 - |
Вопрос
Кто-нибудь знает достойный инструмент, который будет сравнивать две разные версии одной и той же dll и извлекать различия?
Спасибо
Решение
Рефлектор имеет Разница инструмент.Примечание:Reflector теперь является платным программным обеспечением.
Другие советы
dotPeek от JetBrains также можно использовать.Это также бесплатно.
- Откройте сборку в dotPeek.
- Выберите сборку
- Файл -> Экспорт в проект
- Выберите место на диске
Повторите вышеописанное для сборки, которую хотите сравнить, затем откройте две папки в инструменте сравнения.я использовал WinMerge.
Вы заметите, что подавляющее большинство файлов имеют различия.Это потому, что файлы имеют такой комментарий вверху
// MVID: {some guid here}
Вы можете создать фильтр в WinMerge, чтобы игнорировать его.
- Инструменты --> Фильтр...
- Перейдите на вкладку «Фильтры строк».
- Добавьте следующий фильтр
^// MVID:
Когда вы одобрите изменения, он повторно просканирует папки и проигнорирует любую строку, начинающуюся с этого комментария.Теперь вы должны увидеть только те изменения, которые вас интересуют.
Почему бы сначала не разобрать, а потом сравнить?
Использовать .NET-отражатель (Бесплатная версия — это все, что вам нужно), чтобы открыть библиотеки DLL, затем щелкните правой кнопкой мыши и выберите экспортировать их в отдельные каталоги.
Затем используйте ЭкзаменДифф Про для сравнения каталогов (Вы можете получить 30-дневную бесплатную пробную версию).Вы можете перемещаться по подпапкам и при необходимости открывать каждый файл в новом окне сравнения (просто дважды щелкните в окне ExamDiff Pro). Работает потрясающе!
ExamDiff Pro также имеет плагин Dump PE32, который будет напрямую сравнивать файлы .dll и .exe.Это полезно для просмотра изменений заголовков и пометок двоичных различий, но не поможет вам их декомпилировать (поэтому используйте описанный выше метод Reflector).
У команды Microsoft BCL есть инструмент для этого, он называется LibCheck, его можно найти здесь.
http://blogs.msdn.com/b/bclteam/archive/2005/03/21/400123.aspx
Это старый инструмент, и мне пришлось перекомпилировать исходный код, используя более позднюю версию среды выполнения, но он работает хорошо и предоставляет отчеты в формате html об изменениях.