Как мне ссылаться на пространство имен, которое будет использоваться в непосредственном или быстром режиме?
Иногда, когда я проверяю выражение во время выполнения, в окне быстрого просмотра появляется сообщение об ошибке, указывающее, что имя не существует в текущем контексте. То же самое касается немедленного окна. Однако выражение, которое я пытаюсь оценить, отлично распознается классом, не вызывая ошибки компиляции.
Например, у меня может быть следующая строка кода:
double x = Math.Pow(2,3);
Если я остановил курсор на этой строке и быстро просмотрел часть "Math.Pow(2,3)", это дает мне ошибку, и мне нужно разместить "Систему". перед моим выражением; как я уже сказал, одно и то же выражение гладко проходит в окне кода, поэтому я не уверен, что такое "контекст", на который ссылается ошибка.
Может ли быть, что эти отладочные окна ссылаются на пространства имен, объявленные в классе, но не могут сделать то же самое для пространства имен, импортированного проектом?
Ответы
Ответ 1
В моем понимании окна QuickWatch и Immediate выполняют код/выражения под текущим исполняемым контекстом, поэтому, когда есть using System;
на месте в коде, окно quickwatch не даст никаких проблем. Возможно, вы столкнулись с некоторой ошибкой визуальной студии. Попробуйте перезапустить VisualStudio и еще раз проверьте.
Я не сталкивался с такой проблемой. Такая проблема возникает при попытке Quick Watch Math.Pow(2d, 4d);
при наличии кода, подобного этому System.Math.Pow(2d, 4d);
Ответ 2
Решение:
Перейдите в свой файл program.cs и добавьте нужные вам данные, которые вы хотите использовать в ближайшее окно, это работает как для приложений Console, так и для Windows Forms
Разрешить пространства имен в непосредственное окно в проекте библиотеки классов
Если вы используете окно Immediate в режиме "Design Time" и хотите ссылаться на некоторые пространства имён, вам нужно установить режим вывода в приложение Windows и создать программу, которая ничего не делает.
- Щелкните правой кнопкой мыши ваш проект в проводнике решений и выберите свойства
- В разделе "Приложение" измените тип вывода: из библиотеки классов в приложение Windows
- Добавьте в свой проект следующий макет-класс:
Program.cs
using System;
//Add all the refrences you need immediate window to use here
namespace YourNamespace
{
static class Program
{
static void Main()
{
}
}
}