c# - net - common intermediate language
Convertir código C#a código IL (6)
¿Cómo puedo obtener el código IL del código C #? ¿Puedo hacer esto con una biblioteca externa, o existen funciones internas?
EDITAR: Quiero mostrar el código IL en mi aplicación con un MessageBox.
Echa un vistazo a LinqPad, tiene opciones para ver IL.
Es una pregunta bastante antigua, pero me gustaría agregar algunas precisiones.
GetMethodBody()
le proporcionará, en el mejor de los casos, una matriz de bytes, que debe analizar manualmente (lo que puede ser doloroso, ya que algunos GetMethodBody()
tienen dos bytes) para obtener un texto legible.
Solo quiero mencionar a ILSpy como una solución alternativa.
Es de código abierto, lo que significa que puede depurarlo e integrarlo con su solución.
O,
Start -> Programs -> Microsoft .NET Framework SDK (Version) -> Tools -> MSIL Disassembler
Simplemente abra un indicador de comandos de Visual Studio y escriba ildasm ; con ildasm puede abrir cualquier ensamblaje y mostrar el IL generado.
Utilice el desensamblador IL de esta manera:
c:/il>csc Class.cs
c:/il>ildasm /output=Class.il Class.exe
ambos tendrán el IL y el exe.
Programáticamente Puede usar la reflexión para obtener un MethodInfo
y luego llamar a MethodBase.GetMethodBody
para obtener el cuerpo. Desde MethodBody
, puede llamar a GetILAsByteArray
entre otras cosas.
Por supuesto, si solo desea examinarlo usted mismo, hay Reflector , dotPeek , ildasm (parte del SDK de .NET) y, sin duda, otras herramientas ...