Какой-нибудь приличный механизм сравнения/слияния текста для .NET?[закрыто]

StackOverflow https://stackoverflow.com/questions/138331

  •  02-07-2019
  •  | 
  •  

Вопрос

Требования:

  • бесплатно, желательно с открытым исходным кодом
  • реализован на одном из управляемых языков .NET

Гугл нашел вот это:

РЕДАКТИРОВАТЬ:

Никаких приложений, пожалуйста, только библиотеки.

Это было полезно?

Решение

Вы можете захватить компонент COM, который использует Google Diff/Patch/Match.Он работает из .NET.

Обновление, 17 октября 2010 г.Код Google Diff/Patch/Merge был портирован на C#.Компонент COM по-прежнему работает, но если вы используете .NET, вам захочется использовать порт .NET напрямую.

Другие советы

Я думаю, что «Общий - многоразовый алгоритм сравнения на C#» в Codeproject — лучшее, что вы можете найти в качестве .NET-движка для сравнения/исправления/слияния.Я создал с его помощью проект, и он соответствует моим потребностям в большинстве сценариев.Есть один или два худших сценария, когда алгоритм сделал патч-файл больше, чем нужно.Но в большинстве случаев у меня все работает нормально (текстовые файлы размером >30 МБ).

В настоящее время я тестирую еще один проект Codeproject, который вы можете найти здесь: http://www.codeproject.com/KB/applications/patch.aspxДля исправлений используются некоторые библиотеки DLL от Microsoft, поэтому выглядит интересно.Но эти библиотеки DLL неуправляемы, и этот проект является для них лишь своего рода оболочкой.Но, возможно, это может помочь вам

Редактировать:Только что нашел еще один проект, ДиффПлекс: http://diffplex.codeplex.com/Его сочетание библиотеки различий .NET со средством просмотра различий Silverlight и HTML..Как указано там, DiffPlex — это библиотека, которую CodePlex использует для создания различий файлов.

GitSharp включает механизм сравнения, основанный на различиях Мейерса.Взгляните на демонстрацию, в которой реализована простая программа просмотра различий wpf на основе коллекции Diff.Sections: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo

Ни один из ответов на данный момент (за исключением, возможно, ссылки на GitSharp) не касается трехстороннего слияния, поэтому, если это кому-то поможет, я недавно портировал реализацию javascript diff3 Тони Гарнока-Джонса (из синхротрон проект, основанный на Hunt and McIlroy 1976) на C#.

Это упрощенный однофайловый порт методов сравнения и трехстороннего слияния, но это стандартный алгоритм, и пока он у меня работает очень хорошо: https://gist.github.com/2633407

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top