代码之家  ›  专栏  ›  技术社区  ›  aku

有适合.NET的文本差异/合并引擎吗?[关闭]

  •  104
  • aku  · 技术社区  · 17 年前

    要求:

    • 免费的,最好是开源的
    • 在一个.NET托管语言中实现

    谷歌发现了:

    编辑:

    请不要应用程序,只有库。

    4 回复  |  直到 11 年前
        1
  •  79
  •   Community Mohan Dere    9 年前

    你可以抓住 the COM component that uses Google's Diff/Patch/Match . 它在.NET中工作。

    更新,2010年10月17日 : Google Diff/Patch/Merge code 已移植到C。COM组件仍然可以工作,但是如果您来自.NET,您将直接使用.NET端口。

        2
  •  21
  •   nulltoken    14 年前

    我认为codeproject上的“c中的通用-可重用diff算法”是作为diff/patch/merge的.NET引擎所能找到的最好方法。我自己做了一个项目,它符合我的需求,适用于大多数场景。当算法使补丁文件比必须的大时,有一两个最坏的场景。但在大多数情况下,它对我来说都很好(文本文件大小为30 MB)。

    我目前正在测试另一个代码项目,您可以在这里找到: http://www.codeproject.com/KB/applications/patch.aspx 它使用微软的一些DLL进行修补,所以看起来很有趣。但是这些DLL是非托管的,而这个项目只是它的某种包装器。但也许它能帮助你

    编辑: 刚找到另一个项目, 分流 : http://diffplex.codeplex.com/ 它是 .NET差异库与Silverlight和HTML差异查看器的组合 . 如上所述 there ,diffplex是codeplex用来生成文件diff的库。

        3
  •  5
  •   henon    16 年前

    Gitsharp包含基于Meyers Diff的Diff引擎。请看演示,该演示基于Diff.Sections集合实现了一个简单的WPF Diff查看器: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo

        4
  •  5
  •   Tao    14 年前

    到目前为止,没有一个答案(除了可能的Gitsharp参考)能够处理3路合并,因此,如果它能帮助我最近移植了Tony Garnock-Jones的javascript diff3实现(来自 synchrotron 项目,基于Hunt和McIlroy 1976)至C。

    它是diff和三向合并方法的简单单文件端口,但它是标准算法,迄今为止对我来说非常有效: https://gist.github.com/2633407