要求:
免费的,最好是开源的
在一个.NET托管语言中实现
谷歌发现了这些:
一个通用的,可重复使用的DIFF算法在CodeProject
C#的O(ND)差分算法
Joshua Tauberer的C#/ .NET的差异/合并/补丁库
编辑:
没有应用程序,只有库.
您可以获取使用Google的差异/补丁/匹配的COM组件.它适用于.NET.
更新,2010年10月17日:Google Diff/Patch/Merge代码已移植到C#.COM组件仍然有效,但如果您来自.NET,则需要直接使用.NET端口.
我认为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文件库.
GitSharp包含一个基于meyers diff的diff引擎.看看基于Diff.Sections集合实现简单的wpf diff查看器的演示:http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo
到目前为止,没有任何答案(除了可能的GitSharp参考)处理三向合并,所以如果它帮助了我最近移植了Tony Garnock-Jones的javascript diff3实现(来自 同步加速器项目,基于Hunt和McIlroy 1976)到C#.
它是diff和三向合并方法的简单单文件端口,但它是标准算法,到目前为止对我来说效果非常好:https://gist.github.com/2633407