C# утилита сравнения файлов

Можете ли вы порекомендовать хорошую утилиту сравнения файлов, которая может очень хорошо справляться с C#. Я пробовал оба WinMerge, BeyondCompare и KDiff, и они не достаточно хороши, например, если у меня есть функции с одинаковым именем, но помещенные в разные области файла, они показывают это как различия.

5 ответов

Решение

[Обновление (2015): с момента написания этого ответа появились более современные инструменты, которые могут выполнять структурное и семантическое слияние и разграничение кода на разных языках. Смотрите ответ JotaBe для некоторых примеров]

Оригинальный ответ (2010): К сожалению, это тип Diff. Это всегда было построчное сравнение, это не сравнение с учетом языка. Насколько я знаю, нет ничего, что делает то, что вы просите (всегда возможно, что я ошибаюсь).

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

На данный момент (апрель 2015 г.) существует по крайней мере 3 коммерческих инструмента сравнения, которые учитывают структуру файлов кода C# для расширенного сравнения и объединения файлов кода:

Эти три инструмента поддерживают такое расширенное сравнение только на платных версиях (или пробных периодах). AFAIK нет бесплатного инструмента, который может сделать это.

Единственный известный мне инструмент, который может это сделать (я не уверен, что это возможно) - это Git.

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

Смотрите этот ответ для более подробной информации.

Я использую Devart CodeCompare для этой задачи. Нативный редактор VS позволяет мне очень хорошо работать с C# и VB. Они называют эту функцию "Сравнение структуры". Это будет полезно для вас.

Я не думаю, что вы найдете утилиту сравнения текста, которая сделает это. Вам лучше реорганизовать функции, чтобы они были в тех же местах. Я видел, как сгенерированный дизайнером код делает это (т.е. перемещает функции каждый раз, когда файл восстанавливается). Это раздражает, но я не думаю, что вы собираетесь обойти это. BeyondCompare действительно является одной из лучших утилит сравнения.

Другие вопросы по тегам