当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《.NET的任何体面的文本差异/合并引擎?》经验,为你挑选了4个好方法。

要求:

免费的,最好是开源的

在一个.NET托管语言中实现

谷歌发现了这些:

一个通用的,可重复使用的DIFF算法在CodeProject

C#的O(ND)差分算法

Joshua Tauberer的C#/ .NET的差异/合并/补丁库

编辑:

没有应用程序,只有库.



1> Cheeso..:

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

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


看起来这已经移植到C#(完全托管的C#实现).C#版本可在Google页面的下载部分中找到.您可以编辑答案的"COM"位.很好的发现,因为这个实现(至少是python/js版本)被用于一些广泛使用的项目,如Google Docs.
2015年非常有用的答案.请不要删除,如果这种类型的东西被允许,网站将更有用(阅读:另一个网站将允许这个,更多,并起来并转变为专家交流,如果这样的有用的问题根据SO faq中的错误假设,继续关闭原因.

2> Anheledir..:

我认为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文件库.



3> henon..:

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



4> Tao..:

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

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

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有