Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有适合.NET的文本差异/合并引擎?_.net_Merge_Diff - Fatal编程技术网

有没有适合.NET的文本差异/合并引擎?

有没有适合.NET的文本差异/合并引擎?,.net,merge,diff,.net,Merge,Diff,要求: 免费的,最好是开源的 在一个.NET管理的LAGS中实现 谷歌发现了这些: 论代码工程 约书亚·陶伯勒 编辑: 请不要使用应用程序,只使用库。我认为Codeproject上的“通用-可重用的C#中的Diff算法”是作为Diff/patch/merge的.NET引擎所能找到的最好的。我用它自己做了一个项目,它适合我在大多数情况下的需要。当算法使修补程序文件比必须的大时,会出现一到两种最坏情况。但在大多数情况下,它对我来说都很好(文本文件大小>30MB) 我目前正在测试另一个Cod

要求:

  • 免费的,最好是开源的
  • 在一个.NET管理的LAGS中实现
谷歌发现了这些:

  • 论代码工程
  • 约书亚·陶伯勒
编辑:

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

我认为Codeproject上的“通用-可重用的C#中的Diff算法”是作为Diff/patch/merge的.NET引擎所能找到的最好的。我用它自己做了一个项目,它适合我在大多数情况下的需要。当算法使修补程序文件比必须的大时,会出现一到两种最坏情况。但在大多数情况下,它对我来说都很好(文本文件大小>30MB)

我目前正在测试另一个Codeproject项目,您可以在这里找到: 它使用微软的一些DLL进行修补,所以看起来很有趣。但是那些DLL是非托管的,这个项目只是它的某种包装。但也许它能帮助你

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

您可以抓取。它在.NET上工作


更新,2010年10月17日:已将移植到C#。COM组件仍然可以工作,但如果您来自.NET,则需要直接使用.NET端口

GitSharp包括一个基于meyers diff的diff引擎。请看一看演示,它基于diff.Sections集合实现了一个简单的wpf diff查看器:

到目前为止,没有一个答案(可能除了GitSharp参考)涉及三方合并,因此,如果它对任何人都有帮助的话,我最近将Tony Garnock Jones的javascript diff3实现(从基于Hunt和McIlroy 1976的项目)移植到了C


这是一个简单的diff和三方合并方法的单文件端口,但它是标准算法,到目前为止对我来说效果非常好:

感谢您提供的信息!但我希望找到更复杂的解决方案。我简直不敢相信没有人创建了一个整洁的lib当你找到一个更好的库时,请告诉我们(或者至少我是g)-我搜索了很久,除了上面提到的之外没有找到任何东西。Diffplex已经转移到这个线程已经有一段时间没有被贩卖了,但是你最终选择了哪个开源的diff项目?我正在寻找相同的库,除了列出的库之外,我没有找到太多(失望的是,两年来几乎没有什么变化…)。marr75:给你[归功于Cheeso/Brian(见下面的答案)]:“已经移植到C#。COM组件仍然可以工作,但是如果你来自.NET,你会想直接使用.NET端口。”我同意这个答案非常有用,它要求为一个非常具体的编程问题提供一个引擎或算法,我指定它重新打开。看起来它已经被移植到C#(完全管理的C#实现)。谷歌网页的下载部分提供了C#版本。你可以编辑掉你答案中的“COM”部分。这个实现(至少是python/js版本)在一些广泛使用的项目中使用,比如GoogleDocs。Brian,谢谢。我更新了答案。2015年的答案非常有用。请不要删除,如果这类事情被允许,网站将更有用(阅读:另一个网站将允许这样做,以及更多,并且如果像这样的有用问题由于SO faq中错误假设的原因不断关闭,则上升并变成专家交流)。我推荐。它是
netstandard1.0
,重量非常轻。使用
RichTextBox
可以很容易地将其嵌入到WPF应用程序中,就像这样:一个更以C为中心的端口(命名、大小写等)位于:with nuget support:
安装包Diff.Match.Patch
我无法解析gist.github链接-我想知道三向合并方法是否可以集成到中,它是否返回不同的结果,或者实际上与已实现的算法相同?