2012-01-26 15 views
29

A volte vorrei vedere rapidamente la rappresentazione IL dei miei frammenti di codice in C#, per capire cosa succede esattamente a varie istruzioni di codice sotto il cofano, come se fosse fatto here for example.Uno strumento per un'ispezione del codice IL facile

So che ci sono ildasm, Reflector, , dotPeek e probabilmente alcuni altri strumenti disponibili. Quello che mi chiedo qui è che se c'è un modo più elegante di scrivere alcune righe di codice per vedere l'IL corrispondente, che compilare il tuo codice .net, caricare l'assembly in uno di quei programmi e trovare il codice che ti incuriosisce .

Forse con un plug-in per Visual Studio, che aggiungerebbe un'opzione di clic destro per "compilare e visualizzare il codice IL" o qualsiasi altro modo conveniente?

Edit:

Dopo un po 'di più googling ho trovato NDasm codeplex project che fa quello che cercavo - integra in Visual Studio.

Ma il suggerimento LINQPad di vcsjones è ottimo, quindi lo sto contrassegnando come accettato, grazie. Uno strumento davvero utile ...

+0

Sono abbastanza sicuro che Visual Studio Ultimate possa farlo, comunque. – Ryan

+0

@minitech Davvero? Come? – CodingGorilla

+0

@CodingGorilla: non ricordo. L'ho visto una volta, ma non l'ho mai comprato ... sai, sono $ 15.000. – Ryan

risposta

47

Io di solito uso LINQPad per quello. Basta incollare qualche C# e passare alla vista IL. Per esempio:

enter image description here

Mi piace perché si può anche semplicemente inserire espressioni o dichiarazioni invece di un programma completo:

enter image description here

Il meglio di tutti, è gratuito (con caratteristiche premium opzionali).

+8

Probabilmente è importante notare che LINQPad è un incredibile strumento che penso che ogni sviluppatore dovrebbe avere, anche se non guardano mai a IL. È utile in * molti * modi. – vcsjones

+0

L'IL ha anche suggerimenti sugli strumenti, così puoi vedere cosa fa tutto ciò, se non lo conosci/lo riconosci. Commenterà anche i nomi delle variabili e mostrerà il loro tipo su un suggerimento. Ad esempio: il passaggio del mouse su ldc.i4.3 ti darà: "Inserisce il valore intero di 3 nello stack di valutazione come int32". Non sono a conoscenza di quale versione supporti questo, ma è nell'ultima versione (V5.10), ma penso che sia supportato anche nella versione precedente (V4) –

0

Se si dispone di Reflector, è possibile utilizzare l'addin Snippy. Ecco un post sul blog: Reflector Snippy Addin.

Problemi correlati