Kostenloses Tool zum Erkunden kompilierter .NET-Assemblys, Alternative zu .NET Reflector?

Würden Sie ein kostenloses Tool zum Erkunden kompilierter .NET-Assemblys empfehlen? Ich muss in der Lage sein:

  • Untersuchen Sie den Quellcode der Assemblys und visualisieren Sie die IL in einer CLR-Sprache Ihrer Wahl (C#, VB.NET, verwaltetes C++ usw.).
  • Unterstützung der Navigation zwischen den Klassen (z. B. über Strg + Klick auf den Klassennamen oder auf andere bequeme Weise).
  • Prüfung der eingebetteten Ressourcen in der Assembly zulassen, falls vorhanden (Text, Bilder usw.)
  • Kann seit .NET Version 2.0 mit Assemblies umgehen.

Optional freue ich mich, wenn es unterstützt:

  • Klassen in Quelldateien exportieren.
  • Integration mit Visual Studio 2010 (dieses muss nicht kostenlos sein), das das Debuggen des Quellcodes ermöglicht.
  • Die Integration mit der Xamarin Studio IDE (früher MonoDevelop) wäre ein Plus, obwohl ich hier zu optimistisch werde.

Ich habe vor einigen Jahren mit .NET Reflector gearbeitet und es unterstützte die meisten der oben genannten Funktionen (eigentlich alle außer der Xamarin-Integration). Ich habe vor ein paar Wochen versucht, es wieder zu verwenden, aber jetzt ist es ein kommerzielles Produkt geworden und meine alte kostenlose Version funktioniert nicht mehr.

Antworten (4)

ILSpy ist einer der beliebtesten FOSS .NET-Decompiler. Es ist ziemlich intuitiv zu bedienen, obwohl ich Reflector noch nicht ausprobiert habe, sodass ich sie nicht vergleichen kann.

Leider erfüllt es Ihre Anforderungen nicht vollständig, obwohl es nahe kommt. Es gibt keine Unterstützung für die Dekompilierung in C++/CLI, obwohl es für IL, C# und VB.NET gut funktioniert.

Sie können auf Klassen- und Methodennamen klicken, um zu ihren Definitionen zu navigieren, oder sie über das Kontextmenü dahingehend analysieren, wo auf sie zugegriffen wird. Es kann sowohl Bilder als auch Text aus eingebetteten Ressourcen rendern und ermöglicht es Ihnen, sie zu speichern - ich habe keine anderen Dateitypen ausprobiert, aber sie sollten auf die gleiche Weise funktionieren.

Sie können Klassen in Quelldateien exportieren, und Sie können sogar ganze Assemblys in .csproj(MS-Build-)Dateien exportieren. Für einfachere Projekte können diese direkt kompiliert werden. Viele komplexere Projekte lassen sich in der Regel nicht ohne Änderungen kompilieren - insbesondere erwähnt ihre Website, dass sie nicht dekompiliert und dann selbst neu kompiliert werden können. Wenn Sie eine gesamte Assembly dekompilieren müssen, bleibt wahrscheinlich noch viel Arbeit, um sie in einen kompilierbaren Zustand zu versetzen.

Leider ist die Dekompilierung nicht perfekt. Einige komplexere Sprachkonstrukte wie C# dynamicwerden noch nicht unterstützt und können zu einer etwas verstümmelten Ausgabe führen. Sie können immer noch den allgemeinen Algorithmus durch das Durcheinander bekommen, aber es würde sicherlich nicht funktionieren, wenn Sie nur etwas Code kopieren wollten.

IDE-Integration. Es gab einen frühen Versuch für Visual Studio, obwohl er anscheinend aufgegeben wurde. Es scheint auch keine Integration für Xamarin zu geben (wann ist das passiert?). Die Entwickler von ILSpy haben jedoch auch SharpDevelop erstellt, und aktuelle Nachrichten deuten darauf hin, dass sie die SharpDevelop-Integration planen .


Wenn Sie andere Optionen wünschen, gibt es auch dotPeek und JustDecompile . Sie behaupten, Visual Studio-Erweiterungen zu haben, und könnten mit einigen bekannten Unternehmen dahinter ausgefeilter sein. Ich musste keines von beiden verwenden (ILSpy hat für alles funktioniert, was ich brauchte), aber sie passen möglicherweise besser zu Ihren Anforderungen.

Super Erklärung, danke! C++/CLI ist eine Option, auf die ich verzichten kann, und das Exportieren in das gesamte Projekt scheint eine coole Funktion zu sein. Das Xamarin Studio ist ein neuer Spieler, da MonoDevelop (sein früheres Selbst) vor einigen Jahren ein unklares Schicksal hatte. Die SharpDevelop IDE-Unterstützung kann mich dazu bringen, diese IDE auch kennenzulernen. Ich denke, die verstümmelte Ausgabe ist immer ein Problem beim Dekompilieren, und ich bezweifle, dass jemand in einem tatsächlichen Projekt einen eins-zu-eins dekompilierten Code verwenden würde. Das ILSpy scheint dann ein ausreichendes Werkzeug für meine Bedürfnisse zu sein.

Es gibt ein weiteres von telerik entwickeltes Tool - JustDecompile . Es funktioniert wirklich gut und hat alle Funktionen von .NET Reflector und noch einige mehr. (Einschließlich einer Visual Studio-Erweiterung). Es ist auch kostenlos, was schön ist. Ich habe es jedes Mal benutzt, seit es herauskam, und es ist ziemlich nett.

Eines meiner Lieblingsfeatures befindet sich unter dem Werkzeugmenü "Create Project", es nimmt die Assembly und erstellt daraus eine csproj-Datei.

Einfach mit dem MySQL-Datenanbieter dekompilieren

Ich persönlich bin ein großer Fan von dotPeek von Jetbrains, da es sich sehr gut mit Resharper verbindet und einige zusätzliche Funktionen zum Einlesen von .pdb bietet:

Geben Sie hier die Bildbeschreibung ein

Willkommen bei Software Recommendations und vielen Dank für Ihre Teilnahme! Obwohl es ein guter Anfang ist, enthält Ihr Beitrag leider nicht genügend Informationen, um als qualitativ hochwertige Antwort angesehen zu werden. Bitte lesen Sie unsere Diskussion darüber, was eine Antwort von hoher Qualität ausmacht, um zu sehen, ob Sie einige dieser Verbesserungen in Ihre Antwort integrieren können. Insbesondere müssen Sie darauf hinweisen, wie Ihr empfohlenes Produkt den OP-Anforderungen entspricht. Ein paar Hinweise auf Stabilität, Zuverlässigkeit und Leistung könnten auch nett sein ;) Danke!

Die Antworten hier sind gut für die Zeit, in der die Frage gestellt wurde. In der Zwischenzeit hat dnSpy sie meiner Meinung nach übertroffen.

  • ✓ Visualisieren als C# oder VB.NET - oder IL
  • ✓ Navigation zwischen den Klassen – per Strg+Klick
  • ✓ Untersuchung von Ressourcen - Live-Vorschau
  • ? Umgang mit .NET seit 2.0 - so ein altes Programm zum Testen habe ich nicht gefunden :-)
  • ✓ Klassen in Quelldateien exportieren – nur das gesamte Projekt. Ich konnte es für einzelne Klassen nicht finden

Es hat auch andere nützliche Funktionen:

  • Bearbeiten Sie den Code direkt
  • Satzstellung markieren
  • debuggen

Ich habe vorher dotPeek verwendet, aber vor 2 Jahren durch dnSpy ersetzt und bin glücklich.