Nur um zu fragen, ob jemand eine Open-Source- Alternative zu RedGates Reflector kennt ? Ich möchte herausfinden, wie ein Tool ähnlich wie Reflector tatsächlich funktioniert.
Hinweis: Wenn Sie eine kostenlose, aber nicht Open Source-Alternative zu Reflector kennen, können Sie die folgende verwandte Frage beantworten:
Zusammenfassung - Aktualisiert am 11. Mai 2011
Eine kurze Zusammenfassung der verschiedenen vorgeschlagenen Open Source-Projekte und -Tools:
- Common Compiler Infrastructure (CCI)
- Mono Cecil
- ILSpy
- dnSpy (Gabelung von ILSpy, Projekt erscheint aktiver als das Original)
- Dotnet IL Editor (DILE)
- IL.View
- Monoflektor (seit April 2011 nicht mehr aktiv )
Die folgenden Ressourcen können ebenfalls von Interesse sein:
- TypeView.cs
- Jason Haleys Notizen zum Zerlegen von .NET
- Der jüngste Blog-Beitrag der Adrian Bank fasst eine Reihe von Reflektor-Alternativen zusammen, darunter einige Optionen, die unten nicht erwähnt werden.
- Mark Lichtenbergs ausführlicher Blog-Beitrag vergleicht einige der Open-Source-Alternativen (DILE, ILSpy und Mono Cecil mit MonoDevelop) mit Reflector.
.net
reflection
open-source
reflector
MagicAndi
quelle
quelle
Antworten:
2 Optionen, die ich kenne.
Diese geben Ihnen jedoch kein C #.
quelle
Aktualisiert am 13. Dezember 2011
Folgende Open Source-Tools stehen zur Verfügung:
quelle
Ein weiterer Ersatz wäre dotPeek . JetBrains kündigte es als kostenloses Tool an. Es wird wahrscheinlich mehr Funktionen haben, wenn es mit ihrem Resharper verwendet wird aber selbst wenn es alleine verwendet wird, funktioniert es sehr gut.
Die Benutzererfahrung ähnelt eher MSVS als einem eigenständigen Disassembler. Ich lese Code lieber als in Reflector. Strg + T Navigation passt auch besser zu mir. Es könnte besser sein, den Baum nur mit dem Codebereich zu synchronisieren.
Alles in allem befindet es sich noch in der Entwicklung, ist aber bereits sehr gut verwendbar.
quelle
Telerik hat heute eine Beta seines eigenen Dekompilierungs-Tools JustDecompile veröffentlicht . Geschlossene Quelle, aber kostenlos und sieht vielversprechend aus.
quelle
ILSpy funktioniert !
Soweit ich das beurteilen kann, macht es alles, was Reflector getan hat, und sieht auch gleich aus.
quelle
Eigentlich bin ich mir ziemlich sicher, dass Reflector als Disassembler mit einigen Decompiler-Funktionen angesehen wird. Disassembler, weil er die Bytes aus der Datei einer Assembly liest und in eine Assemblersprache konvertiert (in diesem Fall ILasm). Die Decompiler-Funktionalität, die es bietet, indem die IL in bekannte Muster (wie Ausdrücke und Anweisungen) analysiert wird, die dann in übergeordnete Sprachen wie C #, VB.Net usw. übersetzt werden. Mit der Add-In-API für Reflector können Sie Ihren eigenen Sprachübersetzer schreiben, wenn Sie wünschen ... aber die Magie, wie es die IL in die Ausdrucksbäume analysiert, ist ein streng gehütetes Geheimnis.
Ich würde empfehlen, sich eines der drei oben genannten Dinge anzuschauen, wenn Sie verstehen möchten, wie IL-Disassembler funktionieren: Dile, CCI und Mono sind gute Quellen für dieses Zeug.
Ich empfehle außerdem dringend, die Ecma 335-Spezifikation und das Buch von Serge Lidin zu erwerben.
quelle
Der Hauptgrund, warum ich Reflector verwendet habe (und ich denke, der Hauptgrund, warum die meisten Leute es verwendet haben), war der Dekompiler: Es kann die IL einer Methode zurück in den Quellcode übersetzen.
In dieser Hinsicht Monoflector wäre das Projekt, das es zu beobachten gilt. Es verwendet Cecil, das die Reflexion durchführt, und Cecil.Decompiler, das die Dekompilierung durchführt. Monoflector überlagert jedoch beide Bibliotheken mit einer Benutzeroberfläche, die Ihnen eine sehr gute Vorstellung von der Verwendung der API geben sollte.
Monoflector ist auch eine gute Alternative zu Reflector. Sie können damit die Typen durchsuchen und die Methoden dekompilieren. Dies entspricht 99% der Verwendung von Reflector. Es ist sehr rau an den Rändern, aber ich denke, das wird sich schnell ändern.
quelle
Nun, Reflector selbst ist eine .NET-Assembly, sodass Sie Reflector.exe in Reflector öffnen können, um zu überprüfen, wie es erstellt wurde.
quelle
Ich arbeite derzeit an einem Open-Source-Disassembler / Decompiler namens Assembly Analyzer. Es generiert Quellcode für Methoden, zeigt Assembly-Metadaten und -Ressourcen an und ermöglicht es Ihnen, Abhängigkeiten zu durchlaufen.
Das Projekt wird auf CodePlex gehostet => http://asmanalyzer.codeplex.com/
quelle
Das Reflektor-Werkzeug verwendet Reflection.- Anscheinend ist das nicht richtig.Sie haben nach zwei Dingen gefragt - Code, der zeigt, was der Reflektor tut, und auch eine Alternative zum Reflektor.
Hier ist ein Beispiel, das stark vereinfacht ist, aber es zeigt die Technik der Reflexion: TypeView.cs
Ich habe keinen Vorschlag für einen Open-Source-Reflektorersatz.
quelle
System.Reflection
im Framework nicht verwendet , sagte Roeder sehr früh aufgrund von Problemen beim Laden und Entladen von Baugruppen.System.Reflection
Namespace wurde seit den Anfängen von .NET Reflector erweitert. Es unterstützt jetzt das Laden und Entladen von Assemblys in einem reinen