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

aku*_*aku 105 .net diff merge

要求:

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

谷歌发现了这些:

编辑:

没有应用程序,只有库.

Che*_*eso 83

您可以获取使用Google的差异/补丁/匹配的COM组件.它适用于.NET.

更新,2010年10月17日:Google Diff/Patch/Merge代码已移植到C#.COM组件仍然有效,但如果您来自.NET,则需要直接使用.NET端口.

  • 看起来这已经移植到C#(完全托管的C#实现).C#版本可在Google页面的下载部分中找到.您可以编辑答案的"COM"位.很好的发现,因为这个实现(至少是python/js版本)被用于一些广泛使用的项目,如Google Docs. (13认同)
  • 2015年非常有用的答案.请不要删除,如果这种类型的东西被允许,网站将更有用(阅读:另一个网站将允许这个,更多,并起来并转变为专家交流,如果这样的有用的问题根据SO faq中的错误假设,继续关闭原因. (5认同)
  • 我推荐 [DiffPlex](https://github.com/mmanela/diffplex)。它是`netstandard1.0`,重量很轻。您可以使用“RichTextBox”轻松地将它嵌入到您的 WPF 应用程序中,如下所示:https://github.com/halllo/WpfDiff (2认同)

Anh*_*dir 21

我认为Codeproject上的"通用 - C#中可重用的Diff算法"是您可以找到的最好的差异/补丁/合并的.NET引擎.我自己创建了一个项目,它适合我的需求和大多数场景.当算法使补丁文件大于必须时,有一两个最坏情况的scencario.但在大多数情况下,它对我来说很好(大小超过30 MB的文本文件).

我正在测试你可以在这里找到的另一个Codeproject-Project:http://www.codeproject.com/KB/applications/patch.aspx 它正在使用Microsoft的一些DLL进行修补,所以它看起来很有趣.但是那些DLL是不受管理的,这个项目只是它的某种包装.但也许它可以帮助你

编辑: 刚刚找到另一个项目,DiffPlex:http://diffplex.codeplex.com/是.NET Diffing Library与Silverlight和HTML diff查看器的组合.如前所述存在,DiffPlex是CodePlex上利用生成文件的diff文件库.

  • Diffplex 已移至 https://github.com/mmanela/diffplex (2认同)

hen*_*non 5

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


Tao*_*Tao 5

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

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