.NET是否有任何体面的文字差异/合并引擎?[关闭]


108

要求:

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

Google发现了这些:

编辑:

请没有应用,只有图书馆。


5
该线程已经有一段时间没有被贩运了,但是您最终选择了哪个开源diff项目?我正在寻找相同的东西,除了列出的库之外,我没有发现太多(令人失望的是两年内变化很小...)。
marr75'8

1
marr75:在这里[贷记给Cheeso / Brian(请参见下面的答案)]:“ Google Diff / Patch / Merge代码已移植到C#。COM组件仍然有效,但是如果您来自.NET,则可以要直接使用.NET端口。”
戴夫

1
我同意这个答案非常有帮助,它要求一个引擎或算法来解决一个非常具体的编程问题,因此我提名它重新打开。
Mladen Mihajlovic,

Answers:


88

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

2010年10月17日更新Google Diff / Patch / Merge代码已移植到C#。COM组件仍然有效,但是如果您来自.NET,则需要直接使用.NET端口。


14
看起来这已被移植到C#(完全托管的C#实现)中。Google页面的下载部分提供了C#版本。您可以编辑答案的“ COM”位。不错的发现,因为此实现(至少是python / js版本)已在一些广泛使用的项目(例如Google Docs)中使用。
Brian Low 2010年

布莱恩,谢谢。我已经更新了答案。
Cheeso 2010年

6
在2015年非常有用的答案。请不要删除,如果允许这种情况,该站点将更有用(阅读:其他站点将允许此操作,以及更多,如果这样的有用问题,请兴起并将SO变成专家交流由于SO常见问题解答中的错误假设而导致由于某些原因而继续关闭)。
FastAl 2015年

1
我推荐DiffPlex。它的netstandard1.0重量很轻。您可以使用以下代码轻松将其嵌入到WPF应用程序中RichTextBoxgithub.com/halllo/WpfDiff
halllo

1
更多以C#为中心的端口(命名,大小写等)位于:github.com/pocketberserker/Diff.Match.Patch具有nuget支持:Install-Package Diff.Match.Patch
Kirk Woll

21

我认为Codeproject上的“通用-C#中可重复使用的差异算法”是作为diff / patch / merge的.NET引擎找到的最好的方法。我用它自己制作了一个项目,它可以满足大多数情况下的需求。当算法使补丁文件大于必需的大小时,会出现一两种最坏的情况。但在大多数情况下,它对我来说就很好(文本文件的大小> 30 MB)。

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

编辑: 刚刚找到了另一个项目DiffPlexhttp : //diffplex.codeplex.com/是.NET差异库与Silverlight和HTML差异查看器的组合。如前所述存在,DiffPlex是CodePlex上利用生成文件的diff文件库。


谢谢你的信息!但我希望找到更完善的解决方案。我简直不敢相信没有人创造了一些简洁的库
aku

1
当您找到更好的图书馆时,请告诉我们(或至少我要g)-我搜索了很长时间,没有发现已经提到的内容。
Anheledir



5

到目前为止,没有任何答案(可能是GitSharp参考文献除外)涉及三路合并,因此万一它对我最近移植了Tony Garnock-Jones的javascript diff3实现的任何人有帮助(来自基于Hunt和McIlroy 1976 的 synctron项目)到C#。

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


我无法解析gist.github链接-我想知道三种方式的合并方法是否可以集成到这样的工具中,它是否返回不同的结果,或者实际上是否与已经实现的Myers Diff算法相同?
user8276908
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.