2

您能否推荐一个能够很好地处理 C# 的文件比较实用程序。我已经尝试过 WinMerge、BeyondCompare 和 KDiff,但它们还不够好,例如,如果我有同名的函数但放置在文件的不同区域,它们会将其显示为差异。

4

5 回答 5

3

目前(2015 年 4 月),至少有 3 个商业比较工具已经考虑到 C# 代码文件的结构,以便在代码文件之间进行高级差异和合并:

这三个工具仅在付费版本(或试用期)上支持这种高级比较。AFAIK 没有可以做到这一点的免费工具。

于 2015-04-23T09:39:57.763 回答
1

[更新(2015):自从写了这个答案,现在有更多的现代工具可以对各种语言的代码进行结构和语义的合并和区分。有关一些示例,请参见JotaBe 的答案]

原始答案(2010):不幸的是,这就是 Diff 的本质。它一直是逐行比较,而不是语言感知比较。据我所知,没有什么可以满足您的要求(尽管我总是有可能是错的)。

在进行比较之前,您可以使用诸如regionerate 之类的工具来标准化类布局。这将对您的所有方法进行排序,因此您不会遇到同名方法位于文件中不同位置的问题。

于 2010-01-27T11:09:19.373 回答
1

我知道的唯一可以做到这一点的工具(我不确定它是否可以)是Git

据我所知,即使它们被移动到不同的文件中,它也可以跟踪函数,因此在这种情况下使用它不会显示出差异。

有关更多详细信息,请参阅此答案

于 2010-01-27T11:15:38.730 回答
1

我正在使用Devart CodeCompare来完成这项任务。原生 VS 编辑器让我可以很好地处理 C# 和 VB。他们将此功能称为“结构比较”。它将对您有用。

于 2010-10-08T13:39:54.790 回答
0

我认为您不会找到可以执行此操作的文本比较实用程序。你最好重新组织功能,使它们在同一个地方。我见过设计器生成的代码这样做(即,每次重新生成文件时移动函数)。它很烦人,但我认为你不会绕过它。BeyondCompare 确实是最好的比较实用程序之一。

于 2010-01-27T11:07:54.340 回答