Requisitos:
- gratis, preferiblemente de código abierto
- implementado en uno de los idiomas administrados por .NET
Google encontró estos:
- Un algoritmo de diferencia genérico y reutilizable en codeproject
- Un algoritmo de diferencia O (ND) para C #
- Biblioteca Diff / Merge / Patch para C # / .NET por Joshua Tauberer
EDITAR:
Sin aplicaciones, solo bibliotecas.
Respuestas:
Puede tomar el componente COM que usa Diff / Patch / Match de Google . Funciona desde .NET.
Actualización, 17 de octubre de 2010 : el código Google Diff / Patch / Merge se ha trasladado a C #. El componente COM todavía funciona, pero si viene de .NET, querrá usar el puerto .NET directamente.
fuente
netstandard1.0
y muy ligero. Puede incrustarlo fácilmente en su aplicación WPF usando elRichTextBox
siguiente: github.com/halllo/WpfDiffInstall-Package Diff.Match.Patch
Creo que el "Algoritmo de diferencia genérico y reutilizable en C #" en Codeproject es el mejor que puede encontrar como motor .NET para diff / patch / merge. Hice un proyecto por mi cuenta con él y se adapta a mis necesidades con la mayoría de los escenarios. Hay uno o dos escenarios en el peor de los casos cuando el algoritmo hizo que el archivo de parche fuera más grande de lo necesario. Pero en la mayoría de los casos funciona bien para mí (archivos de texto con un tamaño de> 30 MB).
Actualmente estoy probando otro Codeproject-Project que puede encontrar aquí: http://www.codeproject.com/KB/applications/patch.aspx Está usando algunas DLL de Microsoft para parchear, por lo que parece interesante. Pero esas DLL no están administradas y este proyecto es solo una especie de contenedor para él. Pero tal vez te pueda ayudar
Editar: Acabo de encontrar otro proyecto, DiffPlex : http://diffplex.codeplex.com/ Es una combinación de una biblioteca de diferenciación de .NET con un visor de diferencias de Silverlight y HTML . Como se indica allí , DiffPlex es la biblioteca que CodePlex aprovecha para generar las diferencias de archivos.
fuente
GitSharp incluye un motor de diferencias basado en meyers diff. Eche un vistazo a la demostración que implementa un visor de diferencias wpf simple basado en la colección Diff.Sections: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo
fuente
Ninguna de las respuestas hasta ahora (excepto posiblemente la referencia de GitSharp) se ocupa de la fusión de 3 vías, por lo que, en caso de que ayude a alguien, recientemente porté la implementación de javascript diff3 de Tony Garnock-Jones (del proyecto synchrotron , basado en Hunt y McIlroy 1976) a C #.
Es un puerto simplista de un solo archivo de métodos de combinación de tres vías y diferencias, pero es el algoritmo estándar y hasta ahora funciona muy bien para mí: https://gist.github.com/2633407
fuente