Преобразование кода C# в код IL

Как я могу получить IL-код кода C#? Могу ли я сделать это с помощью библиотеки extern или существует внутренние функции ?

EDIT: Я хочу показать код IL в моем приложении с помощью MessageBox.

6 ответов


программно? Вы можете использовать отражение, чтобы получить MethodInfo, а затем вызвать MethodBase.GetMethodBody чтобы получить тело. От MethodBody можно назвать GetILAsByteArray среди других вещей.

конечно, если вы просто хотите изучить его самостоятельно, есть отражатель, dotPeek, ildasm (часть .NET SDK) и, без сомнения, другие инструменты...


используйте дизассемблер IL следующим образом:

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

у вас обоих будет IL и exe.


просто откройте командную строку Visual Studio и введите ildasm - С ildasm вы можете открыть любую сборку и показать сгенерированный IL.


или

Start -> Programs -> Microsoft .NET Framework SDK (Version) -> Tools -> MSIL Disassembler

взгляните на LinqPad, у него есть опции для просмотра IL.


Это довольно старый вопрос, но я хотел бы добавить некоторые погрешности.

GetMethodBody() даст вам в лучшем случае массив байтов, который вам нужно разобрать вручную (что может быть болезненным, так как некоторые опкоды имеют два байта), чтобы получить читаемый человеком текст.

Я просто хочу сказать помощью ILSpy как альтернативное решение.

это с открытым исходным кодом, то есть вы можете отладить его и интегрировать с ним в своем решении.