要求:
- 免费的,最好是开源的
- 在.NET托管lang之一中实现
Google发现了这些:
- 一个通用的,可重复使用的DIFF算法在CodeProject
- C#的O(ND)差异算法
- Joshua Tauberer的C#/。NET的差异/合并/补丁库
编辑:
请没有应用,只有图书馆。
要求:
Google发现了这些:
编辑:
请没有应用,只有图书馆。
Answers:
您可以获取使用Google的Diff / Patch / Match的COM组件。它可以从.NET运行。
2010年10月17日更新:Google Diff / Patch / Merge代码已移植到C#。COM组件仍然有效,但是如果您来自.NET,则需要直接使用.NET端口。
Install-Package Diff.Match.Patch
我认为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上利用生成文件的diff文件库。
GitSharp包含一个基于meyers diff的差异引擎。看一下该示例,该示例基于Diff.Sections集合实现了一个简单的wpf diff查看器:http : //www.eqqon.com/index.php/GitSharp#GitSharp.Demo
到目前为止,没有任何答案(可能是GitSharp参考文献除外)涉及三路合并,因此万一它对我最近移植了Tony Garnock-Jones的javascript diff3实现的任何人有帮助(来自基于Hunt和McIlroy 1976 的 synctron项目)到C#。
这是diff和三路合并方法的简单单文件端口,但这是标准算法,到目前为止对我来说效果很好:https://gist.github.com/2633407