¿Algún motor decente de diferencia / combinación de texto para .NET? [cerrado]
Pregunta
Requisitos:
- libre, preferiblemente de código abierto
- implementado en uno de los lenguajes gestionados por .NET
Google encontró estos:
- Un Diff genérico y reutilizable Algoritmo en proyecto de código
- Un algoritmo de diferencia O (ND) para C #
- Diff / Merge / Patch Library para C # /. NET por Joshua Tauberer
EDITAR:
No hay aplicaciones, solo bibliotecas.
Solución
Puede capturar el componente COM que usa el Diff de Google / Parche / Partido . Funciona desde .NET.
Actualización, 17 de octubre de 2010 : el Google El código Diff / Patch / Merge se ha portado a C #. El componente COM aún funciona, pero si viene de .NET, querrá usar el puerto .NET directamente.
Otros consejos
Creo que el " genérico - algoritmo de diferencia reutilizable en C # " en Codeproject es lo mejor que puedes encontrar como motor .NET para diff / patch / merge. Hice un proyecto por mi cuenta con él y se ajusta a mis necesidades con la mayoría de los escenarios. Hay uno o dos scencarios en el peor de los casos cuando el algoritmo hizo que el archivo de parche fuera más grande de lo que debe ser. 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 puedes 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 envoltorio para ellas. Pero quizás pueda ayudarte
Editar: Acabo de encontrar otro proyecto, DiffPlex : http://diffplex.codeplex.com/ Es una combinación de una biblioteca difusa .NET con un visor de diferencias Silverlight y HTML . Como se indica en allí , DiffPlex es la biblioteca que CodePlex aprovecha para generar las diferencias de archivos.
GitSharp incluye un motor de diferencias basado en las diferencias de Meyers. Eche un vistazo a la demostración que implementa un sencillo visor wpf diff basado en la colección Diff.Sections: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo
Ninguna de las respuestas hasta ahora (excepto posiblemente la referencia de GitSharp) se relaciona con la combinació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 (de sincrotrón , basado en Hunt y McIlroy 1976) a C #.
Es un puerto simple de un solo archivo de métodos de combinación de diferencias y de tres vías, pero es el algoritmo estándar y hasta ahora me funciona muy bien: https://gist.github.com/2633407