.NET有任何不错的文本差异/合并引擎吗?

时间:2020-03-06 14:46:20  来源:igfitidea点击:

要求:

  • 免费的,最好是开源的
  • 在.NET托管lang之一中实现

Google发现了这些:

  • 代码项目上的通用可重用Diff算法
  • C#的O(ND)差异算法
  • Joshua Tauberer的C#/。NET的差异/合并/补丁库

编辑:

请没有应用,只有图书馆。

解决方案

我认为Codeproject上的" C#中的通用可重用差异算法"是作为diff / patch / merge的.NET引擎可以找到的最好的。我用它自己制作了一个项目,它可以满足大多数情况下的需求。当算法使补丁文件大于必需的大小时,会出现一两个最坏的情况。但是在大多数情况下,它对我来说效果很好(文本文件的大小> 30 MB)。

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

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

我们可以获取使用Google的Diff / Patch / Match的COM组件。它可以从.NET运行。

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

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