有没有适合.NET 的文本差异/合并引擎?

要求:

  • 免费的,最好是开源的
  • implemented in one of the .NET managed langs

谷歌发现:

编辑:

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

58257 次浏览

我认为 Codeproject 上的“ C # 中的通用可重用 Diff 算法”是你能找到的最好的。NET-差异/补丁/合并引擎。我用它自己做了一个项目,它符合我的需要,大多数情况下。有一个或两个最坏的情况下,当算法使补丁文件比它必须的大。但是在大多数情况下,它对我来说工作得很好(文本文件大小 > 30MB)。

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

Edit: Just found another project, 区分复用器: http://diffplex.codeplex.com/ 如前所述 there所述,区分复用是 CodePlex 利用来生成文件差异的库。

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

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

GitSharp 包括一个基于 Meyers diff 的 diff 引擎。看看这个演示,它基于 Diff 实现了一个简单的 wpf Diff 查看器。章节集合: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo

到目前为止,所有的答案(可能除了 GitSharp 的参考)都没有涉及到3-way merge,所以为了以防万一,我最近把 Tony Garnock-Jones 的 javascript def3实现(来自于基于 Hunt 和 McIlroy 1976的 同步加速器项目)移植到了 C # 。

它是一个由 diff 和三路合并方法组成的简单的单文件端口,但它是标准算法,到目前为止对我来说运行得非常好: https://gist.github.com/2633407