2010-01-27 11 views
2

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

+1

Пожалуйста, см. Мой новый ответ, и, если вы считаете, что это правильный, отметьте его. Единственная причина - сделать его полезным для сообщества. Пять лет назад ситуация была совсем иной. – JotaBe

+0

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

ответ

1

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

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

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

+1

Альтернатива для регионаризма является блестящей, но теперь есть мощные инструменты, которые могут отлично выполнять то, что задает вопрос, без необходимости изменять свой код вообще. Они могут даже делать более интересные вещи.Пожалуйста, см. Мой ответ. – JotaBe

0

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

1

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

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

См. this answer для более подробной информации.

1

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

2

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

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

+0

Я плачу за SemanticMerge, и это стоит 3 доллара в месяц. –

Смежные вопросы