it-swarm.com.de

Irgendeine anständige Textvergleichs- / Zusammenführungsmaschine für .NET?

Bedarf:

  • kostenlos, vorzugsweise Open-Source
  • implementiert in einem von .NET gemanagten langs

Google fand diese:

BEARBEITEN:

Bitte keine Apps, nur Bibliotheken.

105
aku

Sie können die COM-Komponente, die Googles Diff/Patch/Match verwendet . Es funktioniert von .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.

81
Cheeso

Ich denke, der "Generische - Wiederverwendbare Diff-Algorithmus in C #" in Codeproject ist der beste, den Sie als .NET-Engine für Diff/Patch/Merge finden können. Ich habe damit ein eigenes Projekt erstellt und es entspricht 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. In den meisten Fällen funktioniert es jedoch einwandfrei (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 werden einige DLLs von Microsoft zum Patchen verwendet, so wie es aussieht interessant. Aber diese DLLs werden nicht verwaltet und dieses Projekt ist nur eine Art Wrapper dafür. Aber vielleicht kann es dir helfen

Bearbeiten: Gerade ein anderes Projekt gefunden, DiffPlex : http : //diffplex.codeplex.com/ Es ist eine Kombination aus einer .NET Diffing Library mit einem Silverlight- und einem HTML Diff Viewer. Wie bereits erwähnt dort , ist DiffPlex die Bibliothek, mit der CodePlex die Diffs von Dateien generiert.

21
Anheledir

Keine der bisherigen Antworten (außer möglicherweise der GitSharp-Referenz) befasst sich mit der 3-Wege-Zusammenführung. Für den Fall, dass 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) bis C #.

Es ist ein simpler Single-File-Port für Diff- und Drei-Wege-Merge-Methoden, aber es ist der Standardalgorithmus und funktioniert bisher sehr gut für mich: https://Gist.github.com/2633407

5
Tao

GitSharp enthält eine Diff-Engine, die auf Meyers 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

5
henon