【问题标题】:C# file comparison utility [closed]C# 文件比较实用程序 [关闭]
【发布时间】:2011-01-09 21:59:14
【问题描述】:

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

【问题讨论】:

  • 请看我的新答案,如果您认为它是正确的,请标记它。唯一的原因是让它对社区有用。五年前的情况完全不同。
  • 我同意@JotaBe,情况已经改变,他的回答现在更准确了。我已将我的答案更新为直接发送给他,但如果您仍使用此帐户,则应将接受的答案更新为他的答案。

标签: c# file-comparison


【解决方案1】:

[更新(2015 年):自从编写此答案以来,现在有更多现代工具可以对各种语言的代码进行结构和语义合并和区分。一些例子见JotaBe's answer]

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

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

【讨论】:

  • 区域化替代方案非常棒,但现在有强大的工具可以完美地完成问题所要求的工作,而根本不需要修改您的代码。他们甚至可以做更多有趣的事情。请看我的回答。
【解决方案2】:

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

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

【讨论】:

  • 我为 SemanticMerge 付费,每月 3 美元非常值得。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

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

    更多详情请参阅this answer

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 2020-10-06
        • 2011-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多