[.net] Alternative Open Source a Reflector?


Answers

Aggiornato il 13 dicembre 2011

Sono disponibili i seguenti strumenti open source:

Question

Giusto per chiedere se qualcuno sa di un'alternativa open source a Reflector di RedGate? Sono interessato a verificare come funziona effettivamente uno strumento simile a Reflector.

Nota, se sei a conoscenza di un'alternativa gratuita ma non open source a Reflector, puoi rispondere alla seguente domanda:

Riassunto - Aggiornato l'11 maggio 2011

Un rapido riepilogo dei vari progetti e strumenti open source suggeriti:

  1. Common Compiler Infrastructure (CCI)
  2. Mono Cecil
  3. ILSpy
  4. dnSpy (fork di ILSpy, il progetto appare più attivo dell'originale)
  5. Dotnet IL Editor (DILE)
  6. IL.View
  7. Monoflector ( non più attivo da aprile 2011)

Le seguenti risorse possono anche essere di interesse:

  • TypeView.cs
  • Note di Jason Haley sul disassemblaggio di .NET
  • Il recente post sul blog di Adrian Bank che riassume un numero di alternative Reflector, incluse diverse opzioni non menzionate di seguito.
  • Il blog dettagliato di Mark Lichtenberg che confronta diverse alternative open source (DILE, ILSpy e Mono Cecil usando MonoDevelop) a Reflector.



Bene, Reflector è di per sè un assembly .NET in modo da poter aprire Reflector.exe in Reflector per verificare come è stato realizzato.




Oggi Telerik ha rilasciato una beta del proprio strumento di decompilazione, JustDecompile . Fonte chiusa, ma gratuita e promettente.




In realtà, sono abbastanza sicuro che Reflector sia considerato un disassemblatore con alcune funzionalità di decompilatore. Disassemblatore perché legge i byte dal file di un assembly e lo converte in un linguaggio assembly (ILasm in questo caso). La funzionalità Decompiler che fornisce analizza l'IL in modelli ben noti (come espressioni e istruzioni) che poi vengono tradotti in linguaggi di livello superiore come C #, VB.Net, ecc. L'addin api per Reflector ti permette di scrivere il tuo traduttore di lingua se desideri ... tuttavia la magia di come analizza l'IL negli alberi di espressione è un segreto molto custodito.

Consiglierei di considerare una delle tre cose sopra menzionate se volete capire come funzionano i disassemblatori IL: Dile, CCI e Mono sono tutte buone fonti per questa roba.

Raccomando vivamente di ottenere anche le specifiche di Ecma 335 e il libro di Serge Lidin.




Lo strumento Reflector utilizza Reflection. - a quanto pare non è corretto.

Hai chiesto due cose: codice che mostra cosa fa il riflettore e anche un'alternativa al riflettore.

Ecco un esempio, molto semplificato da cosa fa Reflector, ma mostra la tecnica di riflessione: TypeView.cs

Non ho un suggerimento per una sostituzione del riflettore open source.






Links