2012-03-21 2 views
29

Иногда, когда я проверяю выражение во время выполнения, в окне быстрого просмотра появляется сообщение о том, что имя не существует в текущем контексте. То же самое касается немедленного окна. Однако выражение, которое я пытаюсь оценить, отлично распознается классом, не вызывая ошибки компиляции.Как мне ссылаться на пространство имен, которое будет использоваться в непосредственном или быстром режиме?

Например, я могу иметь следующую строку кода:

double x = Math.Pow(2,3); 

Если я перестану курсор на этой строке и quickwatch в «Math.pow (2,3)» часть, это дает мне ошибка, и мне нужно разместить «Систему». перед моим выражением; как я уже сказал, одно и то же выражение работает гладко в окне кода, поэтому я не уверен, что такое «контекст», на который указывает ошибка.

Может ли быть, что эти отладочные окна ссылаются на пространства имен, объявленные в классе, но не могут сделать то же самое для пространства имен, импортированного проектом?

+0

работает для меня в консольном приложении. Вы используете специальный шаблон проекта? – Alex

+2

Вы просто не можете. Необходимо префикс пространства имен. – SimpleVar

+0

Он также отлично работает без пространства имен для меня. Какую версию/версию/пакет обновления VS вы используете? – adelphus

ответ

4

В моем понимании QuickWatch и Непосредственные окна выполнения кода/выражение в рамках текущего исполняющего контекста, поэтому, когда есть using System; на месте в коде, окно quickwatch не будет давать какие-либо проблемы. Возможно, вы столкнулись с некоторой ошибкой визуальной студии. Попробуйте перезапустить VisualStudio и снова проверьте.

Я не сталкивался с такой проблемой. Такой вопрос будет возникать при попытке быстрого Дозора Math.Pow(2d, 4d); при наличии кода, как этот System.Math.Pow(2d, 4d);

+13

Я встречаюсь с ним все время. Так делают мои коллеги. Использование VS2010 SP1 с обычными проектами библиотеки классов C#. Иногда он распознает пространство имен, иногда это не так. Никогда не находил шаблон. Я всегда думал, что это распространенная проблема в VS и что все это переживают. –

+0

У вас есть расширения, связанные с отладкой в ​​VS2010, так как я также использую тот же VS2010 и до сих пор не сталкивался с этим.следовательно, это может быть связано с некоторыми расширениями, которые я предполагаю. – Saravanan

+0

Нет, нет отладочных расширений. –

3

Решение:

Перейти к файлу Program.cs и добавьте usings вы хотите немедленного окно использование, это работает как для консоли и Windows Forms приложений

Refrence пространств имен Immediate Окно в проект библиотеки классов

Если вы используете Im mediate Window в режиме «Design Time» и хотите ссылаться на некоторые пространства имён, вам нужно установить режим вывода в приложение Windows и создать программу, которая ничего не делает.

  1. правой кнопкой мыши проект в обозревателе решений и выберите пункт Свойства
  2. заявочного, изменить тип выхода: от класса-библиотеки для ОС Windows Application
  3. Добавьте следующий фиктивный класс в проект:

Program.cs

using System; 
//Add all the refrences you need immediate window to use here 

namespace YourNamespace 
{ 
    static class Program 
    { 
     static void Main() 
     { 

     } 
    } 
} 
+0

⁺¹, добавив пространство имен в файл «Program.cs», действительно сделал трюк для окна Immediate! –

+0

За исключением случая пространства имен System.Linq и отладки lambda VS2015, в исходных файлах, где выражение linq еще не выполнено. Добавьте строку 'var temp = Enumerable.Range (1, 1);' перед вашей точкой останова и перезапустите ее, чтобы решить эту проблему. –