2011-12-25 6 views
4

Я ищу некоторую среду, которая позволяет декомпилировать сборку .NET для получения исходного кода.Использование Reflector API для получения декомпилированного исходного кода

Я знаю, что Reflector предлагает какой-то API для выполнения операций над сборками, когда я его использовал, кажется, что я только возвращаю IL-инструкции, а не фактический исходный код.

То, что я хотел бы сделать, это установить какой-то умный обработчик исключенных обработчиков, который вызовет мне неудачные строки кода (для внутренних целей отладки).

Возможно ли использование Reflector API? какие другие инструменты доступны для этого?

+1

Что вы нашли, когда искали? –

+0

Я не уверен, что понял ваш вопрос - искал что? –

+0

Вы действительно хотите фреймворк? Для этого есть инструменты (ILSpy/Reflector может это сделать). Однако, если код запутан, это еще одна история. –

ответ

3

Я написал несколько статей, которые могут вам помочь в этом.

http://www.simple-talk.com/dotnet/.net-framework/-.net-reflector-meets-the-codedom/ рассказывает о создании собственного языка для рефлектора, чтобы разобраться. Это полезно для ходячих языковых структур, которые Reflector будет использовать.

http://www.simple-talk.com/dotnet/.net-tools/hosting-.net-reflector-in-your-own-application/ рассказывает о размещении рефлектора в вашем собственном коде для использования API. Это позволит вам пройти процесс доступа к API в рефлекторе и получить доступ к его логике.

Надеюсь, это поможет хотя бы указать вам, чтобы получить то, что вам нужно.

2

Вы можете взглянуть на (с открытым исходным кодом) ILSpy. Поскольку они в состоянии делать то, что вам нужно, и они также предоставляют исходный код, вы должны принять это как отправную точку.

+2

Это вообще невозможно сделать с помощью Reflector API? я проверю ILSpy. –

-1

I'm не уверены, что я понимаю, что вам нужно, но если вы хотите во время выполнения информации о том, где произошло исключение, вы можете использовать StackTrace и StackFrame классов, найденных в System.Diagnostics пространства имен извлечь информацию из стека вызовов. Но, к сожалению, вы не получите исходный код в ясном тексте.

+1

Следовательно, мой вопрос. –