我如何获取C#代码的IL代码?我可以使用外部库来完成吗,还是存在内部函数可以实现?
编辑:我想要在我的应用程序中使用MessageBox显示IL代码。
我如何获取C#代码的IL代码?我可以使用外部库来完成吗,还是存在内部函数可以实现?
编辑:我想要在我的应用程序中使用MessageBox显示IL代码。
需要以编程方式获取方法体?可以使用反射获取MethodInfo
,然后调用MethodBase.GetMethodBody
来获取方法体。从MethodBody
中,除其他内容外,还可以调用GetILAsByteArray
。
当然,如果只是想自己检查它,也可以使用Reflector、dotPeek、ildasm(.NET SDK的一部分)和其他工具...
CSharpCodeProvider
可以让你将C#源代码编译成IL。 - Jon Skeet像这样使用IL反汇编器:
c:\il>csc Class.cs
c:\il>ildasm /output=Class.il Class.exe
您将同时拥有IL和exe文件。
只需打开Visual Studio命令提示符并键入ildasm - 使用ildasm您可以打开任何程序集并显示生成的IL代码。
看看 LinqPad,它有查看 IL 的选项。
Start -> Programs -> Microsoft .NET Framework SDK (Version) -> Tools -> MSIL Disassembler
GetMethodBody()
最多只能提供一个字节数组,您需要手动解析它(由于一些操作码有两个字节,这可能很痛苦),以获得人类可读的文本。