Непосредственное окно: "Выражение не может быть оценено...."

Когда я пытаюсь оценить выражение в Immediate Window во время разработки, я получаю сообщение об ошибке:

Выражение не может быть оценено в режиме конструктора.

Если я компилирую проект ASP.NET и пытаюсь запустить его в режиме отладки, я получаю еще одну ошибку:

Выражение не может быть оценено в режиме выполнения.

Почему я получаю эти ошибки? Я использовал Immediate Window в прошлом, и он отлично работал даже в режиме дизайна.

4 ответа

Предполагая, что вы не пропустите > В операторе Immediate Window могут возникнуть проблемы, если вы пытаетесь оценить выражение во время разработки в многопроектном решении или даже в веб-проекте.

По данным MSDN:

Если вы пытаетесь оценить функцию в проекте, который не является стартовым проектом для решения, и получаете сообщение об ошибке, попробуйте выбрать проект в обозревателе решений и повторите попытку оценки.

Также:

Вы не можете использовать оценку выражений времени разработки в типах проектов, требующих запуска среды выполнения, в том числе Visual Studio Tools для проектов Office, веб-проектов, проектов Smart Device и проектов SQL.

Стоит отметить, что поведение окна Immediate варьируется в зависимости от используемой вами версии Visual Studio. Если я попытаюсь оценить простое выражение, как ? 2+2 в Visual Studio 2013 Express для Web появляется сообщение об ошибке "Невозможно оценить выражение в режиме разработки"; однако в Visual Studio 2013 Professional выражение оценивается как 4 без необходимости быть в режиме отладки.

Как отметил Нортбен в комментарии, если вы пытаетесь получить доступ к свойствам в ближайшем окне, когда ваше приложение не запущено, вы можете получить:

Выражение не может быть оценено в режиме конструктора.

Следовательно:

  1. Установите точку останова в файле, через который будет выполняться ваше приложение;
  2. Ожидайте остановки приложения (с помощью точки останова или исключения) или запускайте его вручную (например, перейдите по URL-адресу);
  3. Введите в Immediate Window свойство, к которому вы хотите получить доступ (например, GlobalConfiguration.Configuration) - теперь это должно дать вам надлежащие результаты, если это свойство существует в этом контексте. Если его не существует, вы получите:

    Выражение не может быть оценено в режиме выполнения.

Это так же просто, как убедиться, что вы обращаетесь к свойствам в правильном контексте.

В моем случае я получил эту ошибку при использовании Excel Interop после включения встроенной отладки. Затем в режиме отладки я попробовал это:

?xlworkbook.sheets(1).name

Процесс завис, я не получил никакого ответа, и после этого все остальное, например ?2+2 дал мне эту ошибку:

Выражение не может быть оценено в режиме выполнения

Чтобы снова иметь возможность использовать функции отладки, мне пришлось отключить встроенную отладку.

Другие вопросы по тегам