要求:
- 免费,最好是开源的
- 在 .NET 托管语言之一中实现
谷歌发现了这些:
- 一个通用的、可重用的代码项目差异算法
- C# 的 O(ND) 差分算法
- Joshua Tauberer的 C#/.NET 的 Diff/Merge/Patch 库
编辑:
请不要应用程序,只有库。
要求:
谷歌发现了这些:
编辑:
请不要应用程序,只有库。
您可以获取使用 Google 的 Diff/Patch/Match 的 COM 组件。它适用于 .NET。
2010 年 10 月 17 日更新:Google Diff/Patch/Merge 代码已移植到 C#。COM 组件仍然可以工作,但如果您来自 .NET,您将希望直接使用 .NET 端口。
我认为 Codeproject 上的“Generic - Reusable Diff Algorithm in C#”是你能找到的最好的 .NET 引擎,用于 diff/patch/merge。我用它自己做了一个项目,它适合我在大多数情况下的需求。当算法使补丁文件比它必须的大时,会出现一两个最坏的情况。但在大多数情况下,它对我来说效果很好(文本文件大小> 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 viewer 的组合。如上所述, DiffPlex 是 CodePlex 用来生成文件差异的库。
GitSharp 包含一个基于 meyers diff 的 diff 引擎。看一下基于 Diff.Sections 集合实现简单 wpf 差异查看器的演示:http: //www.eqqon.com/index.php/GitSharp#GitSharp.Demo
到目前为止,没有一个答案(可能除了 GitSharp 参考)涉及 3 路合并,所以如果它对我最近移植 Tony Garnock-Jones 的 javascript diff3 实现的任何人有帮助(来自 同步加速器项目,基于 Hunt 和 McIlroy 1976)到 C#。
It's a simplistic single-file port of diff and three-way merge methods, but it's the standard algorithm and so far works very well for me: https://gist.github.com/2633407