Немедленное окно: "Выражение не может быть оценено..."
Когда я пытаюсь оценить выражение в Immediate Window во время разработки, я получаю сообщение об ошибке:
Выражение не может быть оценено в режиме разработки.
Если я скомпилирую проект ASP.NET и попытаюсь запустить его в режиме отладки, я получаю еще одну ошибку:
Выражение не может быть оценено в режиме выполнения.
Почему я получаю эти ошибки? Я использовал Immediate Window в прошлом, и он работал нормально даже в режиме разработки.
Ответы
Ответ 1
Предполагая, что вы не пропустите оператор >
в окне Immediate, могут возникнуть проблемы, если вы пытаетесь оценить выражение во время разработки в многопроектном решении или даже в веб-проекте.
Согласно MSDN:
Если вы пытаетесь оценить функцию в проекте, который не является проект запуска для решения, и вы получаете сообщение об ошибке, попробуйте выбрав проект в обозревателе решений и попытайтесь оценить еще раз.
также:
Вы не можете использовать оценку выражения времени проектирования в типах проектов, которые требуют запуска среды исполнения, включая Visual Studio Инструменты для офисных проектов, веб-проектов, проектов Smart Device и SQL.
Ответ 2
Стоит отметить, что поведение окна Immediate изменяется в зависимости от версии используемой Visual Studio. Если я попытаюсь оценить простое выражение, подобное ? 2+2
в Visual Studio 2013 Express для Web, я получаю сообщение об ошибке "Выражение не может быть оценено в режиме проектирования"; однако в Visual Studio 2013 Professional выражение оценивается как 4
без необходимости в режиме отладки.
Ответ 3
Как northben указал в комментарии, если вы пытаетесь получить доступ к свойствам в непосредственном окне, пока ваше приложение не запущено, вы можете получить:
Выражение не может быть оценено в режиме разработки.
Таким образом:
- Установить точку останова в файле, через которое будет выполняться ваше приложение;
- Ожидать, что выполнение приложения будет остановлено (точкой останова или исключением) или запустить его вручную (например: перейти к URL-адресу);
- Введите в Immediate Window свойство, к которому вы хотите получить доступ (например,
GlobalConfiguration.Configuration
), - теперь это должно дать вам правильные результаты, если это свойство существует в этом контексте. Если он не существует, вы получите:
Выражение не может быть оценено в режиме выполнения.
Это так же просто, как убедиться, что вы обращаетесь к свойствам в правильном контексте.
Ответ 4
В моем случае я получил эту ошибку при использовании Excel Interop после включения собственной отладки. Затем в режиме отладки я попробовал это:
?xlworkbook.sheets(1).name
Процесс зависел, я не получил никакого ответа, и после этого все остальное, например. ?2+2
дал мне эту ошибку:
Выражение не может быть оценено во время работы
Чтобы снова иметь возможность использовать функции отладки, мне пришлось отключить собственную отладку.