25 Stimmen

.NET Assembly Diff / Compare Tool - Was ist verfügbar?

Ich würde gerne einen Vergleich auf Code-Ebene zwischen zwei Baugruppen durchführen; das Diff-Plug-in für Reflector kommt dem bisher am nächsten, aber der Vergleich der gesamten Baugruppe ist ein manueller Prozess, bei dem ich jeden Namespace, jede Klasse und jede Methode aufschlüsseln muss.

Die anderen Tools, die ich bisher gefunden habe, scheinen sich auf Unterschiede auf API-Ebene (Namespaces, Klassen, Methoden) zu beschränken, was für das, wonach ich suche, nicht ausreicht.

Kennt jemand ein solches Werkzeug? Meine Anforderungen (von oben nach unten) sind:

  • Analysieren / Reflektieren können die Code Inhalt von zwei Versionen der gleichen Baugruppe und melden Sie die Unterschiede
  • Akzeptieren Sie einen Ordner oder eine Gruppe von Baugruppen als Eingabe; vergleichen Sie sie schnell (ähnlich wie die Ordner-Diffs von WinMerge)
  • Schnelle Feststellung, ob zwei Baugruppen auf Code-Ebene gleichwertig sind (nicht nur die APIs)
  • Einfaches Drill-down zur Anzeige der Unterschiede ermöglichen
  • Exportieren von Berichten über die Unterschiede

(Ich persönlich mag WinMerge für Textabweichungen, daher wäre eine Anwendung mit einer ähnlichen Schnittstelle großartig)

13voto

Das Werkzeug NDepend bietet viele Funktionen zur Handhabung von .NET-Code-Diff.

Das Gremium Suche nach Änderungen dient zum Durchsuchen von Assemblies Code Diff:

enter image description here


Es werden viele Code-Regeln vorgeschlagen, die Diff und Evolution einschränken. Sie können ein guter Anfang sein, um eigene Regeln zu schreiben oder sie an Ihre Bedürfnisse anzupassen. Sehen Sie sich zum Beispiel die Regel an:

Arten, die früher zu 100 % abgedeckt waren, jetzt aber nicht mehr

// <Name>Types that used to be 100% covered but not anymore</Name>
warnif count > 0
from t in JustMyCode.Types where 
   t.IsPresentInBothBuilds() &&
   t.OlderVersion().PercentageCoverage == 100 &&
   t.PercentageCoverage < 100
let culpritMethods = t.Methods.Where(m => m.PercentageCoverage < 100)
select new {t, t.PercentageCoverage, culpritMethods }

oder auch:


Um die NDepend-Vergleichsfunktionen kennenzulernen, werfen Sie einen Blick in die Dokumentation:

  • Erweiterte Code-Diffs in Visual Studio : erklärt, wie man die NDepend-Funktionen zum Vergleich von Builds verwendet, im Kontext von Visual Studio und Visual NDepend Standalone UI .

  • Meldung Code Diff : erklärt, wie man die NDepend-Funktionen für den Build-Vergleich verwendet, im Rahmen der Berichterstattung .

Haftungsausschluss: Ich arbeite für NDepend

6voto

David Peters Punkte 1807

ILSpy kann eine Assemblierung in eine aufgeräumte Verzeichnisstruktur dekompilieren. Führen Sie dies für jede Ihrer Baugruppen durch, und Sie können ein Vergleichswerkzeug Ihrer Wahl verwenden, um zu sehen, was sich geändert hat.

5voto

oɔɯǝɹ Punkte 7003

Sie können verwenden ILDasm um il source aus einer Baugruppe zu erzeugen. Der IL-Quellcode ist im Grunde eine Textdatei, so dass Sie zwei IL-Dateien mit Standard-Text-Diff-Tools vergleichen können. Die Interpretation der IL-Quellen ist nicht unbedingt erforderlich, wenn Sie die gemeldeten Unterschiede als Hinweis darauf verwenden, wo Sie weiter suchen müssen.

5voto

Diego Jancic Punkte 6913

Dies ist eine Art doppelte Frage, an celui-ci .

Wie bereits in dem anderen Beitrag erwähnt, gibt es ein kostenloses und quelloffenes Tool namens BitDiffer . Es ist erstaunlich, es kann ganze Builds oder einzelne DLLs vergleichen und es zeigt die Namespace-Hierarchie an, um leicht herauszufinden, was sich geändert hat.

4voto

Jason Evans Punkte 28439

Versuchen Sie dies:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X