2012-01-26 13 views
29

A veces me gustaría ver rápidamente la representación IL de mis fragmentos de código en C#, para entender qué sucede exactamente con varias declaraciones de código bajo el capó, como se hace here for example.Una herramienta para facilitar la inspección del código IL

Sé que hay ildasm, Reflector, ILSpy, dotPeek y probablemente bastante algunas otras herramientas disponibles. Lo que me pregunto aquí es si hay alguna forma más elegante de escribir algunas líneas de código para ver el IL correspondiente, que compilar su código .net, cargar el ensamblado en uno de esos programas y encontrar el código que le interesa. .

¿Tal vez tener un complemento para Visual Studio, que agregaría una opción de clic derecho para "construir y ver el código IL" o de otra manera conveniente?

Editar:

Después de un poco más buscando en Google encontré NDasm codeplex project el que hace lo que yo estaba buscando - integra en Visual Studio.

Pero la sugerencia de LINQPad de vcsjones es excelente también, por lo tanto, la estoy marcando como aceptada, gracias. Una herramienta realmente útil ...

+0

Estoy bastante seguro de que Visual Studio Ultimate puede hacer esto, por cierto. – Ryan

+0

@minitech ¿De verdad? ¿Cómo? – CodingGorilla

+0

@CodingGorilla: No recuerdo. Lo vi una vez, pero nunca lo compré ... ya sabes, son $ 15,000. – Ryan

Respuesta

47

Normalmente utilizo LINQPad para eso. Simplemente pegue C# y cambie a la vista IL. Por ejemplo:

enter image description here

me gusta porque también puede simplemente colocar expresiones o declaraciones en lugar de un programa completo:

enter image description here

Lo mejor de todo, es gratis (con características premium opcionales)

+8

Es probable que valga la pena señalar que LINQPad es un herramienta increíble que creo que todos los desarrolladores deberían tener, incluso si nunca miran a IL. Es útil en * muchas * formas. – vcsjones

+0

IL también tiene sugerencias de herramientas, para que pueda ver lo que hace, si no lo sabe/reconoce. También comentará en los nombres de las variables, así como también mostrará su tipo en una información sobre herramientas. Por ejemplo: al pasar el ratón sobre ldc.i4.3 obtendrá: "Coloca el valor entero de 3 en la pila de evaluación como un int32". No sé qué versión es compatible con esto, pero está en la última versión (V5.10) pero creo que también es compatible con la versión anterior (V4) –

0

Si tiene Reflector, puede usar el complemento Snippy. Aquí hay una publicación en el blog: Reflector Snippy Addin.

Cuestiones relacionadas