Сравните (и объедините) два проекта VS C#
У меня есть два проекта VS C# (в частности, для плагина Outlook), которые я считаю очень аналогично, за исключением, возможно, 100 строк кода. Я немного беспокоюсь, что могут быть другие параметры конфигурации для проекта, которые отличаются, поэтому я хотел бы сравнить эти два.
каков наилучший способ увидеть различия между двумя кодовыми базами?
Я попытался поместить два проекта в параллельные каталоги и использовать diff, но поскольку проекты называются по-разному, некоторые из файлов не совпадают. Мне просто интересно, есть ли более простой способ сделать это?
4 ответов
похоже, вам нужно что-то вроде WinMerge пройти и указать на различия между двумя проектами. Это бесплатно, и я знаю, что вы можете сравнить содержимое папки с WinMerge, так что, вероятно, это хорошее место для начала. Запустите WinMerge в папках проекта, и он должен создать подробное сравнение, описывающее различия между файлами.
см. этот учебник по сравнению папки:
http://manual.winmerge.org/CompareDirs.html
Я настоятельно рекомендую Сравнение Кода (не связан, просто счастливый пользователя) для такого рода работы - есть бесплатная версия и более продвинутая версия.
Он хорошо интегрируется с VS и имеет подсветку синтаксиса для C#, C/C++ и т. д.
один из способов: сделайте копии обоих проектов, переименуйте файлы и папки в одном, чтобы соответствовать файлам и папкам в другом, а затем используйте свой любимый инструмент сравнения папок для сравнения двух.
Это не поможет вам, если не было истинной связи копирования и вставки между двумя проектами.
лучшим способом было бы использовать рефакторинг. После создания модульных тестов для обоих проектов и достижения адекватного уровня покрытия кода перейдите по классам и методам метод с использованием рефакторинга, чтобы попытаться сделать пары методов идентичными. Затем вы можете определить методы, которые должны быть втянуты в базовые классы или перемещены в другие классы.
в конце концов, вы можете найти пары классов, которые идентичны. Переместите эти классы в общую библиотеку, а затем переименуйте все виды использования одного из классов в использование другого. Затем удалите тот, который больше не используется.
повторять, пока не будет больше дублирования.
Если у вас есть изменения, такие как переименования или частичные перемещения кода, импортируйте обе версии в один git
репозиторий (как две разные фиксации одного каталога) может помочь. Git отслеживает содержимое файлов, а не сами файлы, поэтому можно узнать, например, функцию, которая была перемещена из одного файла в другой.