112 votes

Un moteur de comparaison/fusion de texte décent pour .NET ?

Exigences :

  • gratuit, de préférence à code source ouvert
  • implémenté dans l'un des langages gérés par .NET

Google a trouvé ça :

EDITAR:

Pas d'applications s'il vous plaît, seulement des bibliothèques.

5 votes

Ce fil n'a pas été utilisé depuis un moment, mais quel projet de diff open source avez-vous choisi ? Je cherche la même chose et à part les bibliothèques listées, je n'ai pas trouvé grand chose (déçu que si peu ait changé en 2 ans...).

1 votes

Marr75 : voici [Crédit à Cheeso / Brian (voir réponses ci-dessous)] : "Le Code Google Diff/Patch/Fusion a été porté en C#. Le composant COM fonctionne toujours, mais si vous venez de .NET, vous voudrez utiliser directement le portage .NET."

1 votes

Je suis d'accord que cette réponse était très utile, elle demande un moteur ou un algorithme pour un problème de programmation très spécifique, et je l'ai nominée pour la réouverture.

91voto

Cheeso Points 87022

Vous pouvez prendre le composant COM qui utilise la fonction Diff/Patch/Match de Google. . Il fonctionne à partir de .NET.

Mise à jour, 17 octobre 2010 : Le site Code Google Diff/Patch/Fusion a été porté en C#. Le composant COM fonctionne toujours, mais si vous venez de .NET, vous voudrez utiliser directement le port .NET.

14 votes

Il semble qu'il ait été porté en C# (implémentation C# complète). La version C# est disponible dans la section téléchargement de la page Google. Vous pouvez supprimer la partie "COM" de votre réponse. Belle découverte car cette implémentation (au moins les versions python/js) est utilisée dans certains projets largement utilisés tels que Google Docs.

0 votes

Brian, merci. J'ai mis à jour la réponse.

6 votes

Réponse très utile en 2015. S'il vous plaît ne supprimez pas, le site serait plus utile si ce type de chose était autorisé (lire : un autre site autorisera cela, et plus encore, et se lèvera et transformera le SO en échange d'experts si des questions utiles comme celle-ci continuent à être fermées pour des raisons basées sur l'hypothèse erronée dans la faq SO).

23voto

Anheledir Points 2806

Je pense que le "Generic - Reusable Diff Algorithm in C#" sur Codeproject est le meilleur que l'on puisse trouver comme moteur .NET pour diff/patch/merge. J'ai réalisé un projet de mon propre chef avec cet algorithme et il répond à mes besoins dans la plupart des cas. Il y a un ou deux pires scénarios quand l'algorithme rend le fichier patch plus grand qu'il ne doit l'être. Mais dans la plupart des cas, il fonctionne très bien pour moi (fichiers texte d'une taille de >30 MB).

Je suis actuellement en train de tester un autre projet de Codeproject que vous pouvez trouver ici : http://www.codeproject.com/KB/applications/patch.aspx Il utilise des DLLs de Microsoft pour Parcheando, donc ça semble intéressant. Mais ces DLLs ne sont pas gérées et ce projet n'est qu'une sorte d'enveloppe pour elles. Mais peut-être qu'il peut vous aider

Edit : Je viens de trouver un autre projet, DiffPlex : http://diffplex.codeplex.com/ C'est une combinaison d'une bibliothèque de diffusion .NET et d'un visualiseur de diffusion Silverlight et HTML. . Comme indiqué DiffPlex est la bibliothèque que CodePlex utilise pour générer les différences entre les fichiers.

0 votes

Merci pour l'info ! mais j'espère trouver une solution plus sophistiquée. Je n'arrive pas à croire que personne n'ait créé une librairie géniale.

1 votes

Si vous trouvez une meilleure bibliothèque, dites-le nous (ou au moins à moi). g ) - J'ai cherché moi-même pendant un certain temps et je n'ai rien trouvé à part ce qui a déjà été mentionné.

2 votes

Diffplex a déménagé à github.com/mmanela/diffplex

5voto

henon Points 205

GitSharp inclut un moteur de diff basé sur meyers diff. Jetez un coup d'oeil à la démo qui implémente une simple visionneuse de différences wpf basée sur la collection Diff.Sections : http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo

5voto

Tao Points 5475

Aucune des réponses données jusqu'à présent (à l'exception peut-être de la référence GitSharp) ne traite de la fusion à trois, alors au cas où cela pourrait aider quelqu'un, j'ai récemment porté l'implémentation de diff3 en javascript de Tony Garnock-Jones (à partir du fichier synchrotron basé sur Hunt et McIlroy 1976) à C#.

C'est un portage simpliste sur un seul fichier des méthodes de diff et de fusion à trois, mais c'est l'algorithme standard et jusqu'à présent, il fonctionne très bien pour moi : https://gist.github.com/2633407

0 votes

Je ne parviens pas à résoudre le lien gist.github - Je me demande si la méthode de fusion à trois pourrait être intégrée dans un fichier de type outil comme celui-ci et s'il renvoie des résultats différents ou s'il est en fait le même que l'option Myers Diff algorithme qui est déjà mis en œuvre ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X