Würden Sie ein kostenloses Tool zum Erkunden kompilierter .NET-Assemblys empfehlen? Ich muss in der Lage sein:
Optional freue ich mich, wenn es unterstützt:
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.
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# dynamic
werden 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.
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.
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:
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.
Es hat auch andere nützliche Funktionen:
Ich habe vorher dotPeek verwendet, aber vor 2 Jahren durch dnSpy ersetzt und bin glücklich.
Iwajlo Slawow