Преобразование IL в код C # - PullRequest
15 голосов
/ 15 марта 2009

Мне нужно преобразовать код IL в код C #. У меня есть сборка, и я читаю эту сборку. Я получаю MethodBody из MethodInfo, а methodbody имеет метод GetILAsByteArraY () который возвращает массив байтов, теперь я хочу преобразовать этот код IL в код C #. Пожалуйста, помогите мне решить эту проблему.

Ответы [ 12 ]

20 голосов
/ 15 марта 2009

Не изобретай велосипед; используйте .NET Reflector Лутца Редера .

15 голосов
/ 22 ноября 2011

Рефлектор Lutz Roeder был приобретен и больше не доступен для бесплатной загрузки.

Теперь существует бесплатный (еще раз) инструмент под названием ILSpy . Я нашел, что это очень хорошо, и он не только сгенерирует код C # из IL, но и создаст проект .csproj, если декомпилирует всю сборку DLL.

9 голосов
/ 19 июля 2010

Повторное изобретение колеса, безусловно, лучший способ учиться! вам придется создать свой собственный класс, который будет конвертировать iL в C #. Для этого требуется знание языка Intermediate.

Я предполагаю, что вы уже преобразовали байтовый массив в инструкции IL, как мы видим в ildasm.exe, используя Reflection.Emit.OpCodes, OpCode.OperandType, BitConvertor.ReadByte (), BitConvertor.ReadInt32 и т. Д.

3 голосов
/ 19 июля 2010

Если вы хотите сделать это самостоятельно, вы можете начать со старого Cecil.Decompiler и улучшить его, см. исходный код и старый пост Jb. Evain объявляет о проекте (ссылка вниз).

1 голос
/ 22 ноября 2011

Для поисковиков Reflector больше не бесплатен. Но от telerik под названием JustDecompile предлагается более новый и лучший, не говоря уже о FREE инструмент Я только что скачал это, и это так здорово, и это просто бета. Видимо телерик обещает бесплатно навсегда.

1 голос
/ 15 марта 2009

Не можете ли вы сделать это с Отражатель ?

Вы можете загрузить сборку и просмотреть ее как VB.net/C#/IL...

1 голос
/ 15 марта 2009

Давайте посмотрим, смогу ли я получить его первым: .NET Reflector ! Это действительно должен быть FAQ ...

0 голосов
/ 29 мая 2010

Может быть, вам стоит попробовать Dis #, если вы не хотите заново изобретать колесо ... Это почти лучший инструмент для преобразования кода NetDASM имеет инструмент, который позволяет конвертировать C # в IL. может, тебе стоит взглянуть на это.

0 голосов
/ 15 марта 2009

Позвольте мне первым предложить вам взять копию Отражателя Красных Врат.

0 голосов
/ 15 марта 2009

Отражатель делает это. Возможно, вы могли бы использовать Reflector против Reflector и узнать, как он решает проблему.

Вы также можете сказать, почему вы хотите это сделать - может быть, лучшее решение вашей общей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...