Сравнить скомпилированные сборки .NET? - PullRequest
48 голосов
/ 17 марта 2009

Есть ли какие-нибудь хорошие программы для сравнения для компиляции сборок .NET?

Например, у меня HelloWorld.dll (1.0.0.0) и HelloWorld.dll (2.0.0.0), и я хочу сравнить различия, как я могу это сделать?

Я знаю, что могу использовать .NET Reflector и использовать плагин Assembly Diff. Есть ли другие хорошие инструменты для этого?

Ответы [ 6 ]

43 голосов
/ 17 марта 2009

Способы сравнения сборок .NET предлагает

Коммерческий:

Бесплатно:

24 голосов
/ 17 марта 2009

Два пути.

Вы можете использовать ILDASM и использовать классические инструменты.

Или вы можете использовать NDepends, что обойдется для этой функции.

[Кусок на C # раздутые ..]

11 голосов
/ 21 июля 2009

Мне просто нужно было сравнить две ревизии одной и той же DLL, которая имела одинаковую версию (мне нужно было внедрить небольшое исправление и развернуть библиотеку DLL в рабочей среде, но я хотел убедиться, что другие изменения не попали в код) , В идеале я хотел бы, чтобы надстройка Assemby Diff показала мне разницу, но она не работает (она думает, что я сравниваю DLL с самой собой). Вот что я сделал:

  • Создано две папки для хранения разобранных исходных файлов.
  • Использовал параметр Reflector * Экспорт (из контекстного меню) для создания исходных файлов из каждой библиотеки DLL в папках, созданных на предыдущем этапе.
  • Использовал бесплатный инструмент DiffMerge для сравнения двух каталогов; инструменты показали мне измененные файлы и разницу.

Это немного глупо, но, похоже, работает. Хотелось бы, чтобы надстройка Assembly Diff работала.

ОБНОВЛЕНИЕ: последняя версия надстройки Assembly Diff должна исправить проблему сравнения двух версий одной и той же сборки. Попробуйте.

7 голосов
/ 28 августа 2010

Инструмент NDepend предлагает множество функций для обработки различий кода .NET. Отказ от ответственности: я один из разработчиков инструмента .

Панель Поиск по изменению предназначена для просмотра сборок кода разн. Обратите внимание:

  • Вы можете подключить к NDepend любой инструмент сравнения кода, используемый меню Сравнить более старую и более новую версию исходного файла
  • Если у вас нет исходного кода, только исходные сборки, есть опция Сравнить более старую и более новую версию, разобраную с помощью Reflector

NDepend Search by Diff Panel

Обратите внимание также на скриншот, что код запроса CQLinq генерируется для просмотра различий.

from m in Application.Methods 
where m.CodeWasChanged() 
select new { m, m.NbLinesOfCode }

По умолчанию предлагаются многие другие запросы и правила diff по умолчанию, которые позволят вам разумно просматривать код .NET.

1 голос
/ 08 августа 2015

Еще одна опция - LibCheck от Microsoft.

Довольно старый консольный инструмент для получения публичного API diff. Я не мог работать без отладки и ретаргетинга на более свежую версию .net. Тем не менее, это дало мне очень четкий вывод, и я собираюсь использовать его позже.

Вот статья со скриншотами.

0 голосов
/ 17 марта 2009

У Java есть хороший вариант: Semantic Diff Utilities

...