Сравните (и объедините) два проекта VS C#

У меня есть два проекта VS C# (в частности, для плагина Outlook), которые я считаю очень аналогично, за исключением, возможно, 100 строк кода. Я немного беспокоюсь, что могут быть другие параметры конфигурации для проекта, которые отличаются, поэтому я хотел бы сравнить эти два.

каков наилучший способ увидеть различия между двумя кодовыми базами?

Я попытался поместить два проекта в параллельные каталоги и использовать diff, но поскольку проекты называются по-разному, некоторые из файлов не совпадают. Мне просто интересно, есть ли более простой способ сделать это?

4 ответов


похоже, вам нужно что-то вроде WinMerge пройти и указать на различия между двумя проектами. Это бесплатно, и я знаю, что вы можете сравнить содержимое папки с WinMerge, так что, вероятно, это хорошее место для начала. Запустите WinMerge в папках проекта, и он должен создать подробное сравнение, описывающее различия между файлами.

см. этот учебник по сравнению папки:
http://manual.winmerge.org/CompareDirs.html

enter image description here


Я настоятельно рекомендую Сравнение Кода (не связан, просто счастливый пользователя) для такого рода работы - есть бесплатная версия и более продвинутая версия.

Он хорошо интегрируется с VS и имеет подсветку синтаксиса для C#, C/C++ и т. д.


один из способов: сделайте копии обоих проектов, переименуйте файлы и папки в одном, чтобы соответствовать файлам и папкам в другом, а затем используйте свой любимый инструмент сравнения папок для сравнения двух.

Это не поможет вам, если не было истинной связи копирования и вставки между двумя проектами.

лучшим способом было бы использовать рефакторинг. После создания модульных тестов для обоих проектов и достижения адекватного уровня покрытия кода перейдите по классам и методам метод с использованием рефакторинга, чтобы попытаться сделать пары методов идентичными. Затем вы можете определить методы, которые должны быть втянуты в базовые классы или перемещены в другие классы.

в конце концов, вы можете найти пары классов, которые идентичны. Переместите эти классы в общую библиотеку, а затем переименуйте все виды использования одного из классов в использование другого. Затем удалите тот, который больше не используется.

повторять, пока не будет больше дублирования.


Если у вас есть изменения, такие как переименования или частичные перемещения кода, импортируйте обе версии в один git репозиторий (как две разные фиксации одного каталога) может помочь. Git отслеживает содержимое файлов, а не сами файлы, поэтому можно узнать, например, функцию, которая была перемещена из одного файла в другой.