如何获取C#代码的IL代码?我可以使用extern库或内部函数吗?
编辑:我想在我的应用程序中使用MessageBox显示IL代码。
答案 0 :(得分:24)
编程?您可以使用反射来获取MethodInfo
,然后调用MethodBase.GetMethodBody
来获取正文。从MethodBody
开始,您可以致电GetILAsByteArray
等。
当然,如果您只想自己检查一下,那就是Reflector,dotPeek,ildasm(.NET SDK的一部分),毫无疑问是其他工具......
答案 1 :(得分:6)
像这样使用IL反汇编程序:
c:\il>csc Class.cs
c:\il>ildasm /output=Class.il Class.exe
你们都有IL& exe。
答案 2 :(得分:3)
只需打开Visual Studio命令提示符并键入 ildasm - 使用ildasm,您可以打开任何程序集并显示生成的IL。
答案 3 :(得分:1)
或,
Start -> Programs -> Microsoft .NET Framework SDK (Version) -> Tools -> MSIL Disassembler
答案 4 :(得分:0)
看看LinqPad,它可以看到IL。
答案 5 :(得分:0)
这是一个相当古老的问题,但我想补充一些准确性。
GetMethodBody()
最多会给你一个字节数组,你需要手动解析(这可能很痛苦,因为一些操作码有两个字节)来获取人类可读的文本。
我只想提及ILSpy作为替代解决方案。
它是开源的,这意味着您可以调试它并在解决方案中与其集成。