2009-04-29 2 views
0

Что нужно сделать, чтобы вставить (F11) отраженный код.Visual Studio 2008 - как вступить в (F11) отраженный код

Я создаю объект с помощью отражения:..

myObject.GetType() GetConstructor() Invoke (myParams)

и я хочу пойти в код конструктора. Если я нажимаю F11 он просто пропускает код конструктора;. (

, но в то же время, если я поставил точку останова CTOR и нажмите F5 - это ударит эту точку останова

Таким образом, есть все, что я могу сделать для включения шага в отраженный код.

+0

Эй, алекс. Можете ли вы пометить мой ответ как правильный, пожалуйста :). –

+0

спасибо, Джонатан, сделано. – AlexKelos

ответ

4

Просто мой код может быть причиной проблем.

В Visual Studio:

  1. Инструменты -> Параметры
  2. Debugging (слева)
  3. Снимите галочку "Включить Just My кодекс (Managed Only)" справа.

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

+0

Спасибо Джонатан. Это поразило бычий глаз. За работой. Фантастика. Благодарю. – AlexKelos

1

Я считаю, что проблема заключается в том, что нет необходимости вводить код. Предполагая, что вы имеете дело с скомпилированным модулем или библиотекой, вы просто не можете войти в него с момента его скомпилирования. Даже если вы входите во что-то, что вы написали, объект генерируется в памяти, поэтому компилятор, вероятно, не имеет понятия о том, откуда эти инструкции поступают больше.

+0

Я не уверен, что мы говорим об одном и том же. Я сказал - я не могу сделать это для кода ctor, но я могу войти в этот код, если я просто поставлю и простую точку останова и отлаживаю (F5). Таким образом, шаг можно было бы «эмулировать» Visual Studio, неявно добавляя точку останова и F5-ing, если VS обнаруживает, что я собираюсь вставить в MethodBase.Invoke (который должен покрывать 50% -ное отражение) – AlexKelos

0

Что сказал Soviut: это скомпилированный код, вы не можете в него вникать. Но я видел, как это работает при создании классов с использованием CodeDOM и, записывающих их на диск и Скомпилирование CodeDOM в Debug. Затем вы можете входить в сгенерированные классы. Но, очевидно, это очень конкретный случай.

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

0

У меня была такая же проблема, но после некоторых исследований я понял, что проблема JustMyCode была проблемой. Обычно он отключает большинство встроенных средств отладки. После этого все прошло хорошо. Если вам нравится JustMyCode, используйте его как инструмент для отладки.

Смежные вопросы