要求:

  • 免费,最好是开源的
  • 在 .NET 托管语言之一中实现

谷歌找到了这些:

编辑:

没有应用程序,只有图书馆。

有帮助吗?

解决方案

你可以抢 使用 Google 的 Diff/Patch/Match 的 COM 组件. 。它在 .NET 上运行。

更新,2010 年 10 月 17 日: :这 Google 差异/补丁/合并代码 已移植到C#。COM 组件仍然可以工作,但如果您来自 .NET,您将希望直接使用 .NET 端口。

其他提示

我认为 Codeproject 上的“Generic - Reusable Diff Algorithm in C#”是您能找到的最好的用于 diff/patch/merge 的 .NET 引擎。我自己用它做了一个项目,它符合我的大多数场景的需求。当算法使补丁文件大于其必须的大小时,会出现一两种最坏的情况。但在大多数情况下,它对我来说效果很好(文本文件大小> 30 MB)。

我目前正在测试另一个 Codeproject-Project,您可以在这里找到: http://www.codeproject.com/KB/applications/patch.aspx它使用了 Microsoft 的一些 DLL 来进行修补,因此看起来很有趣。但这些 DLL 是非托管的,这个项目只是它的某种包装。但也许它可以帮助你

编辑:刚刚找到另一个项目, 差异复合体: http://diffplex.codeplex.com/它是 .NET Diffing 库与 Silverlight 和 HTML diff 查看器的组合. 。就像声明的那样 那里, DiffPlex 是 CodePlex 用于生成文件差异的库。

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

到目前为止,没有一个答案(可能除了 GitSharp 参考)涉及 3 路合并,因此,如果它可以帮助任何人,我最近移植了 Tony Garnock-Jones 的 javascript diff3 实现(来自 同步加速器 项目,基于 Hunt 和 McIlroy 1976)到 C#。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top