16

如何获得 C# 代码的 IL 代码?我可以使用外部库执行此操作,还是存在内部函数?

编辑:我想用 MessageBox 在我的应用程序中显示 IL 代码。

4

6 回答 6

30

以编程方式?您可以使用反射来获取 a MethodInfo,然后调用MethodBase.GetMethodBody以获取正文。您可以从MethodBody中调用GetILAsByteArray

当然,如果您只是想自己检查一下,还有ReflectordotPeek、 ildasm (.NET SDK 的一部分),毫无疑问还有其他工具......

于 2011-07-04T18:22:27.017 回答
6

像这样使用 IL 反汇编程序:

c:\il>csc Class.cs    
c:\il>ildasm /output=Class.il Class.exe

你们都将拥有 IL 和 exe。

于 2011-07-04T18:22:55.587 回答
5

只需打开 Visual Studio 命令提示符并键入ildasm - 使用 ildasm 您可以打开任何程序集并显示生成的 IL。

于 2011-07-04T18:23:06.217 回答
1

看看 LinqPad,它有查看 IL 的选项。

于 2011-07-04T18:23:47.297 回答
1

或者,

Start -> Programs -> Microsoft .NET Framework SDK (Version) -> Tools -> MSIL Disassembler
于 2011-07-04T18:25:33.947 回答
0

这是一个很老的问题,但我想补充一些准确性。

GetMethodBody()最多会给你一个字节数组,你需要手动解析它(这可能会很痛苦,因为一些操作码有两个字节)以获得人类可读的文本。

我只想提到ILSpy作为替代解决方案。

它是开源的,这意味着您可以对其进行调试并将其集成到您的解决方案中。

于 2016-05-03T12:13:00.643 回答