Сравнить скомпилированные .СЕТЕВЫЕ сборки?
-
19-08-2019 - |
Вопрос
Существуют ли какие-либо хорошие программы для сравнения с compile .СЕТЕВЫЕ сборки?
Например, у меня есть HelloWorld.dll (1.0.0.0) и HelloWorld.dll (2.0.0.0), и я хочу сравнить различия, как я могу это сделать?
Я знаю, что могу использовать .NET Reflector и использовать плагин Assembly Diff.Есть ли какие-нибудь другие хорошие инструменты для этого?
Решение
Способы сравнения сборок .NET предполагает
Коммерческий:
Бесплатно:
- Простая сборка
- Битдифферент
- Надстройка для дифференцирования отражателя (который вы уже обнаружили)
Другие советы
Два пути.
Вы можете использовать ILDASM и использовать классические инструменты.
Или вы можете использовать NDepends, что обойдется для этой функции.
[Часть к C # раздувает ..]
Мне просто нужно было сравнить две редакции одной и той же библиотеки DLL, которые имели одинаковую версию (мне нужно было внедрить небольшое исправление и развернуть библиотеку DLL в рабочей среде, но я хотел убедиться, что никакие другие изменения не просочились в код).В идеале я бы хотел, чтобы надстройка Assemby Diff показала мне разницу, но она не работает (она думает, что я сравниваю библиотеку DLL с самой собой).Итак, вот что я сделал:
- Создал две папки для хранения разобранных исходных файлов.
- Использовал Отражатель's Экспорт опция (из контекстного меню) для создания исходных файлов из каждой библиотеки DLL в папках, созданных на предыдущем шаге.
- Воспользовался бесплатным Разница инструмент для сравнения двух каталогов;инструменты показали мне измененные файлы и разницу.
Это немного запутанно, но, кажется, работает.Однако я хотел бы, чтобы надстройка Assembly Diff работала.
Обновить:Предполагается, что последняя версия надстройки Assembly Diff должна устранить проблему сравнения двух версий одной и той же сборки.Дайте ему попробовать.
Инструмент NDepend предлагает множество функций для обработки.РАЗНИЦА в ЧИСТОМ коде. Отказ от ответственности:Я являюсь одним из разработчиков этого инструмента.
Панель Поиск по изменению предназначен для просмотра различий в коде сборок.Обратите внимание на это:
- Вы можете подключить к NDepend любой инструмент code diff, используемый в меню Сравните старую и более новую версии исходного файла
- Если у вас нет исходного кода, только необработанные сборки, есть вариант Сравните старую и новую версии в разобранном виде с Reflector
Обратите также внимание на скриншоте, что Запрос кода CQLinq генерируется для просмотра различий.
from m in Application.Methods
where m.CodeWasChanged()
select new { m, m.NbLinesOfCode }
Многие другие запросы и правила diff по умолчанию предлагаются по умолчанию, что позволит вам просматривать.Разумно используйте NET code diff.
- Типы, которые раньше были покрыты на 100%, но больше нет
- Критические изменения в API:Методы
- Избегайте усложнения сложных методов еще больше
- Избегайте уменьшения покрытия кода тестами типов
- Отныне все добавляемые или реорганизуемые типы должны соответствовать основным принципам качества
- Избегайте преобразования неизменяемого типа в изменяемый
- Эвристический метод поиска типов, перемещенных из одного пространства имен или сборки в другое
Еще один вариант - LibCheck от Microsoft. р>
Довольно старый консольный инструмент для получения публичного API diff. Я не мог работать без отладки и ретаргетинга на более свежую версию .net. Тем не менее, это дало мне очень четкий вывод, и я собираюсь использовать его позже. Р>
Вот статья со скриншотами , Р>
У Java есть хороший вариант: Утилиты семантической различий