Сравнить скомпилированные сборки .NET? - программирование
Подтвердить что ты не робот

Сравнить скомпилированные сборки .NET?

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

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

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

4b9b3361

Ответ 2

Два способа.

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

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

[Piece to С# bloaters..]

Ответ 3

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

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

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

UPDATE: последняя версия надстройки Diff для сборки должна исправить проблему сравнения двух версий одной и той же сборки. Попробуйте.

Ответ 4

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

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

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

NDepend Search by Diff Panel

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

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

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

Ответ 5

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

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

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