Требования:
- бесплатно, желательно с открытым исходным кодом
- реализован на одном из управляемых языков .NET
Google нашел это:
- Общий многоразовый алгоритм различий в кодовом проекте
- Разностный алгоритм O (ND) для C #
- Библиотека Diff / Merge / Patch для C # /. NET, автор Джошуа Тауберер
РЕДАКТИРОВАТЬ:
Никаких приложений, только библиотеки.
Ответы:
Вы можете взять компонент COM, который использует Google Diff / Patch / Match . Работает с .NET.
Обновление, 17 октября 2010 г . : Код Google Diff / Patch / Merge перенесен на C #. Компонент COM по-прежнему работает, но если вы работаете с .NET, вам нужно напрямую использовать порт .NET.
источник
netstandard1.0
и очень легкий вес. Вы можете легко встроить его в свое приложение WPFRichTextBox
следующим образом: github.com/halllo/WpfDiffInstall-Package Diff.Match.Patch
Я думаю, что "Generic - Reusable Diff Algorithm in C #" на Codeproject - лучшее, что вы можете найти в качестве .NET-Engine для diff / patch / merge. Я создал с ним собственный проект, и он подходит для большинства сценариев. Есть один или два наихудших сценария, когда алгоритм делает файл исправления больше, чем он должен быть. Но в большинстве случаев у меня это прекрасно работает (текстовые файлы размером> 30 МБ).
В настоящее время я тестирую другой проект Codeproject, который вы можете найти здесь: http://www.codeproject.com/KB/applications/patch.aspx. Он использует некоторые библиотеки DLL от Microsoft для исправлений, поэтому выглядит интересно. Но эти DLL неуправляемы, и этот проект для них всего лишь своего рода оболочка. Но, может быть, это поможет тебе
Изменить: только что нашел другой проект, DiffPlex : http://diffplex.codeplex.com/. Это комбинация библиотеки .NET Diffing Library с программой просмотра различий Silverlight и HTML . Как указано там , DiffPlex - это библиотека, которую CodePlex использует для генерации различий файлов.
источник
GitSharp включает движок различий, основанный на различиях Майерса. Взгляните на демонстрацию, которая реализует простую программу просмотра различий wpf на основе коллекции Diff.Sections: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo
источник
Ни один из ответов до сих пор (за исключением, возможно, ссылки на GitSharp) не касается трехстороннего слияния, поэтому, если это поможет кому-то, я недавно портировал реализацию javascript diff3 Тони Гарнок-Джонса (из проекта синхротрона , основанного на Hunt и McIlroy 1976) в C #.
Это упрощенный однофайловый порт для методов сравнения и трехстороннего слияния, но это стандартный алгоритм, и пока он у меня работает очень хорошо: https://gist.github.com/2633407
источник