Requisitos:
- grátis, de preferência de código aberto
- implementado em um dos idiomas gerenciados .NET
O Google encontrou estes:
- Um algoritmo de difração genérico e reutilizável no projeto de código
- Um algoritmo de diferença O (ND) para C #
- Biblioteca de Diff / Merge / Patch para C # /. NET de Joshua Tauberer
EDITAR:
Nenhum aplicativo, por favor, apenas bibliotecas.
Respostas:
Você pode pegar o componente COM que usa o Diff / Patch / Match do Google . Funciona a partir do .NET.
Atualização, 17 de outubro de 2010 : O código Google Diff / Patch / Merge foi portado para C #. O componente COM ainda funciona, mas se você estiver vindo do .NET, deverá usar a porta .NET diretamente.
fonte
netstandard1.0
e muito leve. Você pode incorporá-lo facilmente em seu aplicativo WPF usando oRichTextBox
seguinte: github.com/halllo/WpfDiffInstall-Package Diff.Match.Patch
Acho que o "Generic - Reutilizável Diff Algorithm em C #" no Codeproject é o melhor que você pode encontrar como um .NET-Engine para diff / patch / merge. Fiz um projeto por conta própria com ele e ele atende às minhas necessidades na maioria dos cenários. Existem um ou dois cenários de pior caso, quando o algoritmo tornou o arquivo de patch maior do que deveria ser. Mas na maioria dos casos funciona bem para mim (arquivos de texto com tamanho> 30 MB).
No momento, estou testando outro projeto Codeproject que você pode encontrar aqui: http://www.codeproject.com/KB/applications/patch.aspx Ele está usando algumas DLLs da Microsoft para correção, por isso parece interessante. Mas essas DLLs não são gerenciadas e este projeto é apenas uma espécie de invólucro para ele. Mas talvez isso possa te ajudar
Edit: Acabei de encontrar outro projeto, DiffPlex : http://diffplex.codeplex.com/ É uma combinação de uma Biblioteca de Diffing .NET com um visualizador de Silverlight e HTML diff . Conforme declarado lá , DiffPlex é a biblioteca que o CodePlex utiliza para gerar as diferenças de arquivos.
fonte
GitSharp inclui um mecanismo de comparação baseado em diferenças de meyers. Dê uma olhada no demo que implementa um visualizador wpf diff simples baseado na coleção Diff.Sections: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo
fonte
Nenhuma das respostas até agora (exceto possivelmente a referência GitSharp) lidam com mesclagem de 3 vias, então caso isso ajude alguém, recentemente portei a implementação de javascript diff3 de Tony Garnock-Jones (do projeto síncrotron , baseado em Hunt e McIlroy 1976) para C #.
É uma porta simplista de arquivo único de métodos diff e three-way merge, mas é o algoritmo padrão e até agora funciona muito bem para mim: https://gist.github.com/2633407
fonte