Wymagania:
- darmowy, najlepiej open-source
- zaimplementowany w jednym z języków zarządzanych przez .NET
Google znalazło te:
- Ogólny algorytm różnicowy wielokrotnego użytku w codeproject
- Algorytm różnicowy O (ND) dla języka C #
- Biblioteka Diff / Merge / Patch dla C # / .NET autorstwa Joshua Tauberera
EDYTOWAĆ:
Żadnych aplikacji, tylko biblioteki.
Odpowiedzi:
Możesz pobrać komponent COM, który używa Google's Diff / Patch / Match . Działa z .NET.
Aktualizacja, 17 października 2010 : Kod Google Diff / Patch / Merge został przeniesiony do C #. Komponent COM nadal działa, ale jeśli pochodzisz z .NET, będziesz chciał użyć bezpośrednio portu .NET.
źródło
netstandard1.0
bardzo lekki. Możesz łatwo osadzić go w swojej aplikacji WPF, korzystając zRichTextBox
tego: github.com/halllo/WpfDiffInstall-Package Diff.Match.Patch
Myślę, że "Generic - Reusable Diff Algorithm in C #" w Codeproject jest najlepszym, jaki można znaleźć jako .NET-Engine dla diff / patch / merge. Zrobiłem z niego projekt samodzielnie, który pasuje do moich potrzeb w większości scenariuszy. Istnieje jeden lub dwa najgorsze scenariusze, w których algorytm sprawił, że plik poprawki był większy, niż powinien. Ale w większości przypadków działa dobrze dla mnie (pliki tekstowe o rozmiarze> 30 MB).
Obecnie testuję inny projekt Codeproject, który można znaleźć tutaj: http://www.codeproject.com/KB/applications/patch.aspx Używa niektórych bibliotek DLL firmy Microsoft do aktualizacji, więc wygląda to interesująco. Ale te biblioteki DLL są niezarządzane, a ten projekt jest dla nich tylko jakimś opakowaniem. Ale może to ci pomoże
Edycja: Właśnie znalazłem inny projekt, DiffPlex : http://diffplex.codeplex.com/ Jest to połączenie biblioteki .NET Diffing Library z przeglądarką Silverlight i HTML diff . Jak tam wspomniano , DiffPlex jest biblioteką używaną przez CodePlex do generowania różnic plików.
źródło
GitSharp zawiera silnik różnicowy oparty na mechanizmie Meyers. Spójrz na demo, które implementuje prostą przeglądarkę różnic wpf opartą na kolekcji Diff.Sections: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo
źródło
Żadna z dotychczasowych odpowiedzi (z wyjątkiem prawdopodobnie odniesienia GitSharp) nie dotyczy 3-way merge, więc na wypadek, gdyby to pomogło komukolwiek, ostatnio przeportowałem implementację javascript diff3 Tony'ego Garnocka-Jonesa (z projektu synchrotron , opartego na Hunt i McIlroy 1976) do C #.
Jest to uproszczony jednoplikowy port diff i metody trójdrożnego łączenia, ale jest to standardowy algorytm i jak dotąd działa bardzo dobrze: https://gist.github.com/2633407
źródło