Ответов (6)6
В Reflector есть инструмент Diff . Примечание. Reflector теперь является платной программой.
Примечание: инструмент Diff больше не доступен. Вы все еще можете загрузить его через Softpedia и использовать со старыми версиями Reflector (примерно с 2010 года). В более поздних версиях это больше не работает.
dotPeek от JetBrains также можно использовать. Это тоже бесплатно.
- Откройте сборку в dotPeek
- Выберите сборку
- Файл -> Экспорт в проект
- Выберите место на диске
Повторите описанное выше для сборки, которую хотите сравнить, затем откройте две папки в инструменте сравнения. Я использовал WinMerge .
Вы заметите, что у подавляющего большинства файлов есть различия. Это потому, что файлы имеют комментарий вверху, подобный этому
// MVID: {some guid here}
или
// Assembly location: {some path here}
Вы можете создать фильтр в WinMerge, чтобы игнорировать его
- Инструменты -> Фильтр ...
- Перейдите на вкладку "Линейные фильтры"
- Добавьте следующий фильтр
^// MVID:
- Добавьте следующий фильтр (необязательно)
^// Assembly location:
- Установите флажок рядом с вашим новым регулярным выражением
- Установите флажок "Включить фильтры строк".
Когда вы подтвердите изменения, он повторно просканирует папки и проигнорирует любую строку, начинающуюся с этого комментария. Теперь вы должны увидеть только те изменения, которые вас интересуют.
У команды Microsoft BCL есть инструмент для этого, он называется LibCheck, его можно найти здесь.
http://blogs.msdn.com/b/bclteam/archive/2005/03/21/400123.aspx
Это старый инструмент, и мне пришлось перекомпилировать исходный код, используя более позднюю версию среды выполнения, но он работает хорошо и предоставляет отчеты об изменениях в формате html.
Используйте .NET Reflector (бесплатная версия - это все, что вам нужно), чтобы открыть библиотеки DLL, затем щелкните правой кнопкой мыши и выберите их экспорт в отдельные каталоги.
Затем используйте ExamDiff Pro для сравнения каталогов (вы можете получить 30-дневную бесплатную пробную версию). Вы можете перемещаться по подпапкам и при необходимости открывать каждый файл в новом окне сравнения (просто дважды щелкните в окне ExamDiff Pro). Отлично работает!
ExamDiff Pro также имеет плагин Dump PE32, который будет сравнивать файлы .dll и .exe напрямую. Это полезно для просмотра изменений заголовков и двоичных различий флагов, но не будет декомпилировать их для вас (поэтому используйте метод Reflector выше).