要求:
编辑:
请不要申请,只有图书馆。
答案 0 :(得分:79)
你可以抓住the COM component that uses Google's Diff/Patch/Match。它适用于.NET。
更新,2010年10月17日:Google Diff/Patch/Merge code已移植到C#。 COM组件仍然有效,但如果您来自.NET,则需要直接使用.NET端口。
答案 1 :(得分:21)
我认为Codeproject上的“通用 - C#中可重用的Diff算法”是您可以找到的最好的差异/补丁/合并的.NET引擎。我自己创建了一个项目,它适合我的需求和大多数场景。当算法使补丁文件大于必须时,有一两个最坏情况的scencario。但在大多数情况下,它对我来说效果很好(文本文件大小> 30 MB)。
我目前正在测试您可以在此处找到的另一个Codeproject项目:http://www.codeproject.com/KB/applications/patch.aspx 它正在使用Microsoft的一些DLL进行修补,因此它看起来很有趣。但是那些DLL是不受管理的,这个项目只是它的某种包装。但也许它可以帮助你
修改强> 刚刚找到另一个项目 DiffPlex :http://diffplex.codeplex.com/ 它是 .NET Diffing Library与Silverlight和HTML diff查看器的组合。如上所述there,DiffPlex是CodePlex用来生成文件差异的库。
答案 2 :(得分:5)
GitSharp包含一个基于meyers diff的diff引擎。看看基于Diff.Sections集合实现简单的wpf diff查看器的演示:http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo
答案 3 :(得分:5)
到目前为止,没有任何答案(除了可能的GitSharp参考)处理三向合并,所以如果它帮助了我最近移植了Tony Garnock-Jones的javascript diff3实现(来自synchrotron项目,基于Hunt和McIlroy 1976)到C#。
这是一个简单的diff和三向合并方法的单文件端口,但它是标准算法,到目前为止对我来说效果很好:https://gist.github.com/2633407