任何体面的文本差异/合并引擎的.NET?

要求:

  • 免费的,最好是开源的
  • 在一个.NETpipe理的langs中实现

谷歌发现这些:

  • 一个通用的,可重用的差分algorithm的代码项目
  • 用于C#的O(ND)差分algorithm
  • C / .NET的Diff / Merge / Patch Library由Joshua Tauberer提供

编辑:

没有应用程序,只有图书馆。

您可以抓取使用Google的Diff / Patch / Match的COM组件 。 它从.NET工作。

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

我认为Codeproject中的“C#中的generics – 可重用差异algorithm”是您可以find的用于差异/补丁/合并的.NET引擎中最好的。 我自己做了一个项目,它适合大多数情况下的需求。 当algorithm使补丁文件大于它必须的时候,会有一两个最糟糕的情况。 但是在大多数情况下,它对我来说工作得很好(大小超过30 MB的文本文件)。

我目前正在testing另一个Codeproject项目,你可以在这里find: http : //www.codeproject.com/KB/applications/patch.aspx它使用一些来自微软的DLL补丁,所以它看起来很有趣。 但是这些DLL是非托pipe的,这个项目只是一些包装。 但也许它可以帮助你

编辑:刚刚find另一个项目, DiffPlex : http : //diffplex.codeplex.com/是一个.NET Diffing库与Silverlight和HTML差异查看器的组合 。 如上所述,DiffPlex是CodePlex用来生成文件差异的库。

GitSharp包含一个基于meyers diff的diff引擎。 看一看基于Diff.Sections集合实现简单的wpf diff查看器的演示: http : //www.eqqon.com/index.php/GitSharp#GitSharp.Demo

目前为止,没有任何答案(可能是GitSharp参考)处理3路合并,所以如果有人帮助我最近移植Tony Garnock-Jones的javascript diff3实现(来自同步加速器项目,基于Hunt和McIlroy 1976)到C#。

这是一个简单的单文件端口的差异和三路合并的方法,但它是标准的algorithm,到目前为止,我工作得很好: https : //gist.github.com/2633407