Dowolny porządny silnik diff / merge for.NET? [zamknięte]

Wymagania:

  • darmowy, najlepiej open-source
  • zaimplementowane w jednym z zarządzanych przez. Net langów

Google znalazło Te:

EDIT:

Żadnych aplikacji proszę, tylko biblioteki.

Author: aku, 2008-09-26

4 answers

Możesz pobrać komponent COM, który używa Google Diff / Patch / Match . Działa z .NET.

Update, 2010 Oct 17: Google diff/Patch/merge code został przeniesiony do C#. Komponent COM nadal działa, ale jeśli pochodzisz z. NET, będziesz chciał użyć portu. NET bezpośrednio.

 78
Author: Cheeso,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:27

Myślę ,że "Generic - reusable Diff Algorithm in C#" w Codeproject jest najlepszym, jaki można znaleźć jako silnik. NET dla diff / patch / merge. Zrobiłem z nim projekt na własną rękę i pasuje do moich potrzeb w większości scenariuszy. Istnieje jeden lub dwa najgorsze scencario, gdy algorytm uczynił plik łaty większym, niż musi być. Ale w większości przypadków działa to dobrze dla mnie (pliki tekstowe o rozmiarze >30 MB).

Aktualnie testuję kolejny Codeproject-projekt, który znajdziesz tutaj: http://www.codeproject.com/KB/applications/patch.aspx Używa bibliotek DLL od Microsoftu do łatania, więc wygląda interesująco. Ale te biblioteki DLL są niezarządzane, a ten projekt jest tylko rodzajem opakowania dla niego. Ale może to ci pomoże

Edit: Właśnie znalazłem kolejny projekt, DiffPlex: http://diffplex.codeplex.com / Jest to kombinacja Biblioteki różnicującej.NET z przeglądarką zarówno Silverlight, jak i HTML diff viewer. Jak stwierdzono tam , DiffPlex jest biblioteką wykorzystywaną przez CodePlex do generowania różnic plików.

 21
Author: Anheledir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-16 14:03:28

GitSharp zawiera silnik diff oparty na meyers diff. Spójrz na demo, które implementuje prostą przeglądarkę różnic wpf opartą na różnicy.Zbiór sekcji: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo

 5
Author: henon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-31 00:45:07

Do tej pory żadna z odpowiedzi (z wyjątkiem GitSharp reference) Nie dotyczy 3-way merge, więc na wypadek, gdyby komuś to pomogło, przeniosłem Ostatnio implementację javascript diff3 Tony' ego Garnocka-Jonesa (z projektu synchrotron, opartego na Hunt and McIlroy 1976) do C#.

Jest to uproszczony port jednego pliku metod diff i Three-way merge, ale jest to standardowy algorytm i jak na razie działa bardzo dobrze dla mnie: https://gist.github.com/2633407

 4
Author: Tao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-21 13:11:06