2010-01-27 6 views
2

Pouvez-vous recommander une bonne comparaison de fichiers utilitaire qui est capable de gérer C# très bien. J'ai essayé à la fois WinMerge, BeyondCompare et KDiff et ils ne sont pas assez bons, par ex. Si j'ai des fonctions avec le même nom mais placées dans différentes zones du fichier, elles apparaissent comme des différences.C# comparaison fichier utilitaire

+1

S'il vous plaît, voir ma nouvelle réponse, et, si vous pensez que c'est la bonne réponse, marquez-le. La seule raison est de le rendre utile pour la communauté. Il y a cinq ans, la situation était très différente. – JotaBe

+0

Je suis d'accord avec @JotaBe, la situation a changé et sa réponse est maintenant plus précise. J'ai mis à jour ma réponse pour la diriger vers la sienne, mais si vous utilisez toujours ce compte, vous devez mettre à jour la réponse acceptée. –

Répondre

1

[Mise à jour (2015): Depuis l'écriture de cette réponse, il existe maintenant des outils plus modernes qui peuvent faire la fusion structurelle et sémantique et diffing de code dans diverses langues. Voir JotaBe's answer quelques exemples]

réponse originale (2010): Malheureusement, ce genre est de la nature de Diff. Cela a toujours été une comparaison ligne par ligne, ce n'est pas une comparaison basée sur la langue. Autant que je sache, il n'y a rien qui fasse ce que vous demandez (c'est toujours possible, je me trompe).

Vous pouvez utiliser un outil comme regionerate pour standardiser la mise en page de la classe avant de faire la comparaison. Cela ordonnerait toutes vos méthodes, donc vous n'auriez pas le problème avec une méthode du même nom étant dans des endroits différents dans un fichier.

+1

L'alternative regionerate est brillante, mais il existe maintenant des outils puissants qui peuvent parfaitement faire ce que la question demande, sans avoir besoin de modifier votre code du tout. Un ils peuvent même faire des choses plus intéressantes.S'il vous plaît, voir ma réponse. – JotaBe

0

Je ne pense pas que vous allez trouver un texte comparer utilitaire qui le fera. Il vaut mieux réorganiser les fonctions pour qu'elles soient aux mêmes endroits. J'ai vu le code généré par le concepteur le faire (c'est-à-dire, déplacer les fonctions à chaque fois que le fichier est régénéré). C'est énervant, mais je ne pense pas que vous allez le contourner. BeyondCompare est vraiment l'un des meilleurs utilitaires de comparaison là-bas.

1

Le seul outil que je suis conscient de cela peut être en mesure de le faire (je ne suis pas sûr qu'il peut) est Git. Autant que je sache, il peut suivre les fonctions même si elles sont déplacées vers des fichiers différents, donc l'utiliser dans ce scénario ne montrerait aucune différence.

Voir this answer pour plus de détails.

1

J'utilise Devart CodeCompare pour cette tâche. L'éditeur VS natif me permet de gérer très bien C# et VB. Ils appellent cette fonctionnalité "Comparaison de structure". Cela vous sera utile.

2

En ce moment (avril 2015), il y a au moins 3 outils de comparaison commerciaux qui ont en compte la structure des fichiers de code C# pour faire une avancée diff et de fusion entre les fichiers de code:

Ces trois outils soutiennent ce genre de comparaison avancée seulement les versions payées (ou les périodes d'essai). AFAIK il n'y a pas d'outil gratuit qui peut le faire.

+0

Je paie pour SemanticMerge et ça vaut bien les 3 $/mois. –