.NET de l'Assemblée Diff / Outil de comparaison - Ce qui est disponible?
J'aimerais être capable de faire au niveau du code diff entre les deux assemblées; la Diff plug-in pour Réflecteur est la chose la plus proche que j'ai trouvé jusqu'à présent, mais à comparer l'ensemble est un processus manuel m'oblige à descendre dans chaque espace de noms/classe/méthode.
Les autres outils que j'ai trouvé jusqu'à présent semblent être limitée à l'API de niveau (espaces de noms, classes, méthodes) différences--qui n'est pas suffisant pour ce que je suis à la recherche d'.
Personne ne sait d'un tel outil? Mes exigences (du plus élevé au plus bas) sont:
- Être en mesure d'analyser /refléter la code le contenu des deux versions de la même assemblée et de signaler les différences
- Accepter un dossier ou d'un groupe d'assemblées d'entrée; comparer rapidement (sur le même WinMerge du dossier diff)
- Rapide de la capacité de déterminer si les deux assemblées sont équivalentes au niveau du code (et pas seulement de l'API)
- Permettre easy drill-down pour afficher les différences
- Exportation de rapports en ce qui concerne les différences
(Personnellement, j'aime WinMerge pour le texte de diff, donc une application avec une interface similaire serait génial)
Vous devez vous connecter pour publier un commentaire.
L'outil NDepend offre de nombreuses fonctionnalités pour gérer .NET code diff.
Le panneau de Recherche par le Changement est dédié à parcourir assemblées code diff:
De nombreuses règles de code de cette contrainte diff et l'évolution sont proposées. Ils peuvent être une bonne façon de commencer à écrire votre propre ou de les adapter à vos besoins. Par exemple regardez la règle:
Des Types utilisés pour être couvertes à 100% mais pas plus
ou aussi:
Pour commencer avec NDepend comparer les capacités, jetez un oeil à la documentation:
Code avancé Diff à partir de Visual Studio: explique comment utiliser le NDepend construire comparaison des fonctionnalités, dans le contexte de Visual Studio et Visual NDepend autonome de l'INTERFACE utilisateur.
Code De Signalement Diff: explique comment utiliser le NDepend construire comparaison des fonctionnalités, dans le contexte de la déclaration.
Disclaimer: je travaille pour NDepend
Vous pouvez utiliser
ILDasm
pour générer de il source à partir d'un assembly. IL source est en fait un fichier texte, de sorte que vous pouvez comparer les deux de il fichiers à l'aide de texte standard diff outils. L'interprétation de le IL des sources ne peut pas nécessaires, si vous utilisez l'ont signalé les différences comme une indication où chercher plus loin.ILSpy peut décompiler un assmembly à une coquette structure de répertoire. Effectuez cette opération pour chacun de vos assemblées et vous pouvez utiliser un outil de comparaison de votre choix pour voir ce qui a changé.
C'est en quelque sorte un double question, à cette une.
Comme mentionné dans l'autre, il y en a & outil open source appelé BitDiffer. C'est incroyable, il peut comparer les ensemble construit ou unique Dll et il montre l'espace de noms de la hiérarchie, afin de trouver facilement ce qui a changé.
Essayez ces:
Je crois qu'il existe un Réflecteur addon pour qu'au http://www.codeplex.com/reflectoraddins appelé diff. Vous pouvez essayer.
La diff addin pour réflecteur, c'est génial!
Ive été utilisé pendant des années.
J'ai fait un petit outil en particulier pour la comparaison des Assemblages d'une certaine manière. J'ai eu deux assemblées qui étaient fondamentalement les mêmes, sauf le IL dans les méthodes était légèrement différente, et on a eu quelques Opr, en répandre partout. Le code C# est quasi identique, mais la IL était clairement très différent. J'ai essayé d'utiliser ILDasm et en comparant le résultat généré avec TortoiseMerge/WinDiff, mais elle a de nombreuses fausses différences qu'il était inutile de. L'Opr, vraiment foiré avec la sortie depuis il a changé de branche adresses et élaboré une différence sur chaque ligne de chaque méthode.
Donc, j'ai construit un petit outil appelé ILDump. Il est sous licence BSD. Il est capable de découper des Opr, l'utilisation "intelligente" de l'étiquette de renommer, de sorte que le code est le même, mais déplacé par un NOP, il ne sera pas détecté en tant que différence par Diff programmes, et elle n'imprime des étiquettes significatives(c'est à dire, ceux qui sont ramifiés/commuté). Il est également possible de trier les méthodes de sorte que les deux assemblées, qui ont été "créé" dans une autre façon de ne pas être pris comme une différence.
C'est certainement pas parfait, il ne gère pas quelque chose, mais dumping de chaque méthode de l'ILLINOIS, et il n'y a aucun espoir de les allers-retours. La raison que j'ai créé, c'était pour rendre la lecture de la méthode IL est plus facile(il est intelligent d'étiquetage facilite considérablement la piste branches), et pour que je puisse le lancer à travers un programme comme TortoiseMerge ou WinDiff et il pas de dire qu'il y a une différence sur chaque ligne de code.