2010-01-27 26 views
2

你能推荐一个很好的文件比较实用程序,它能够很好地处理C#。我已经尝试了WinMerge,BeyondCompare和KDiff,并且它们不够好,例如如果我具有相同名称的功能,但放置在文件的不同区域,则会将其显示为差异。C#文件比较实用程序

+1

请看我的新答案,如果你认为这是正确的答案,请将其标记出来。唯一的原因是让它对社区有用。五年前情况完全不同。 – JotaBe 2015-04-23 09:44:34

+0

我同意@JotaBe,情况发生了变化,现在他的回答更加准确。我已经更新了我的答案以直接发给他,但如果您仍然使用此帐户,则应该将接受的答案更新为他的答案。 – 2015-07-06 09:55:36

回答

1

[更新(2015):自写这个答案以来,现在有更多的现代工具,可以做各种语言的代码的结构和语义合并和差异。见JotaBe's answer的一些例子]

原来的答复(2010): 不幸的是,这是一种差异的性质。它始终是逐行比较,这不是一种语言意识的比较。据我所知,没有任何东西可以满足你的要求(虽然总是有可能我错了)。

您可以使用像regionerate这样的工具来标准化班级布局,然后再进行比较。这将命令你所有的方法,所以你不会遇到同名文件中不同位置的方法的问题。

+1

区域替代方案非常出色,但现在有强大的工具可以完美地完成问题所要求的内容,而无需修改代码。他们甚至可以做更多有趣的事情。请看我的答案。 – JotaBe 2015-04-23 09:47:56

0

我不认为你会找到一个文本比较工具来做到这一点。你最好重新组织这些函数,使它们在相同的地方。我见过设计器生成的代码执行此操作(即,每次文件重新生成时移动函数)。它令人讨厌,但我认为你不会解决它。 BeyondCompare确实是最好的比较实用工具之一。

1

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

据我所知,它可以跟踪功能,即使它们移动到不同的文件,所以在这种情况下使用它不会显示出差异。

查看this answer了解更多详情。

1

我为此任务使用Devart CodeCompare。 Native VS编辑器让我可以很好地处理C#和VB。他们称这个功能为“结构比较”。这对你有用。

2

此时(2015年4月),有有考虑至少3个商业比较工具的C#代码文件的结构,使先进的DIFF和代码文件之间的合并:

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

+0

我支付SemanticMerge,它的价值3美元/月。 – 2015-04-23 09:41:44