Bedarf:
- kostenlos, vorzugsweise Open Source
- implementiert in einem der .NET verwalteten langs
Google hat diese gefunden:
- Ein generischer, wiederverwendbarer Diff-Algorithmus für Codeprojekte
- Ein O (ND) -Differenzalgorithmus für C #
- Diff / Merge / Patch-Bibliothek für C # /. NET von Joshua Tauberer
BEARBEITEN:
Bitte keine Apps, nur Bibliotheken.
Antworten:
Sie können die COM-Komponente abrufen, die Google Diff / Patch / Match verwendet . Es funktioniert aus .NET.
Update, 17. Oktober 2010 : Der Google Diff / Patch / Merge-Code wurde nach C # portiert. Die COM-Komponente funktioniert weiterhin, aber wenn Sie aus .NET kommen, möchten Sie den .NET-Port direkt verwenden.
quelle
netstandard1.0
und sehr leicht. Sie können es einfach in Ihre WPF-Anwendung einbetten, indem SieRichTextBox
Install-Package Diff.Match.Patch
Ich denke, der "Generic - Reusable Diff Algorithm in C #" auf Codeproject ist der beste, den Sie als .NET-Engine für diff / patch / merge finden können. Ich habe selbst ein Projekt damit gemacht und es passt zu meinen Bedürfnissen in den meisten Szenarien. Es gibt ein oder zwei Worst-Case-Szenarien, in denen der Algorithmus die Patch-Datei größer gemacht hat, als sie sein muss. Aber in den meisten Fällen funktioniert es gut für mich (Textdateien mit einer Größe von> 30 MB).
Ich teste gerade ein anderes Codeproject-Projekt, das Sie hier finden: http://www.codeproject.com/KB/applications/patch.aspx Es verwendet einige DLLs von Microsoft zum Patchen, daher sieht es interessant aus. Diese DLLs werden jedoch nicht verwaltet, und dieses Projekt ist nur eine Art Wrapper dafür. Aber vielleicht kann es dir helfen
Bearbeiten: Ich habe gerade ein anderes Projekt gefunden, DiffPlex : http://diffplex.codeplex.com/ Es ist eine Kombination einer .NET Diffing Library mit einem Silverlight- und einem HTML Diff-Viewer . Wie bereits erwähnt gibt , ist DiffPlex die Bibliothek , dass CodePlex die Differentiale von Dateien zu erzeugen , nutzt.
quelle
GitSharp enthält eine Diff-Engine, die auf Meyer Diff basiert. Schauen Sie sich die Demo an, die einen einfachen wpf diff-Viewer implementiert, der auf der Diff.Sections-Sammlung basiert: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo
quelle
Keine der bisherigen Antworten (außer möglicherweise der GitSharp-Referenz) befasst sich mit 3-Wege-Zusammenführung. Falls dies jemandem hilft, habe ich kürzlich die Javascript diff3-Implementierung von Tony Garnock-Jones portiert (aus dem Synchrotron- Projekt, basierend auf Hunt und McIlroy 1976). zu C #.
Es ist ein vereinfachter Single-File-Port mit Diff- und Drei-Wege-Merge-Methoden, aber es ist der Standardalgorithmus und funktioniert bisher sehr gut für mich: https://gist.github.com/2633407
quelle