114

要求:

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

谷歌发现了这些:

编辑:

请不要应用程序,只有库。

4

4 回答 4

92

您可以获取使用 Google 的 Diff/Patch/Match 的 COM 组件。它适用于 .NET。

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

于 2009-05-14T16:42:58.053 回答
23

我认为 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 是非托管的,这个项目只是它的某种包装器。但也许它可以帮助你

编辑: 刚刚找到另一个项目,DiffPlexhttp ://diffplex.codeplex.com/ 它是 .NET Diffing Library 与 Silverlight 和 HTML diff viewer 的组合。如上所述 DiffPlex 是 CodePlex 用来生成文件差异的库。

于 2008-09-26T09:32:17.383 回答
5

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

于 2010-01-31T00:45:07.073 回答
5

到目前为止,没有一个答案(可能除了 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

于 2012-05-21T13:11:06.140 回答