如何在立即窗口或快速监视中引用命名空间?

38
有时候在运行时快速查看表达式时,快速查看窗口会显示一个错误,称名称在当前上下文中不存在。相同的情况也适用于即时窗口。但是,我要求评估的表达式可以被类完全识别,而不会引发任何编译错误。
例如,我可以有以下代码行:
double x = Math.Pow(2,3);

如果我把光标停在这一行上并快速查看“Math.Pow(2,3)”部分,那么会出现错误,我需要在表达式前面加上“System.”;正如我所说,同样的表达式在代码窗口中顺利运行,因此我不确定错误指的是哪个“上下文”。

这些调试窗口是否引用了类中声明的命名空间,但不能对项目导入的命名空间进行相同的引用?


在控制台应用程序中对我有效。您是否使用特殊的项目模板? - Alex
2
你只能加上命名空间前缀,无法不加。 - SimpleVar
你好,没有命名空间对我来说也可以正常工作。你使用的是哪个版本/服务包的VS? - adelphus
我正在使用7 Ultimate下的VS2010专业版SP1。 - ccalboni
2个回答

5
在我的理解中,快速查看窗口和立即窗口会在当前执行环境下执行代码/表达式,因此一旦代码中有using System;,快速查看窗口就不会出现任何问题。你可能遇到了一些Visual Studio的bug,请尝试重新启动VisualStudio并再次检查。
我没有遇到过这种问题。当你尝试在System.Math.Pow(2d, 4d);这样的代码中使用快速查看功能来查看Math.Pow(2d, 4d);时,就会出现这种问题。

18
我经常遇到这个问题,我的同事们也是。我们使用VS2010 SP1和普通的C#类库项目。有时它会识别命名空间,有时不会。从未发现规律。我一直认为这是VS中普遍存在的问题,每个人都会遇到。 - Allon Guralnek
你有没有关于VS2010调试的扩展,因为我也在使用同样的VS2010,但到目前为止还没有遇到过这个问题。所以我猜可能是由于某些扩展引起的。 - Saravanan
没有调试扩展。 - Allon Guralnek

5

解决方案:

打开你的 program.cs 文件,添加你想要在立即窗口中使用的引用,这适用于控制台应用程序和 Windows 窗体应用程序。

将命名空间引用到类库项目的立即窗口中

如果您正在使用“设计时”模式下的立即窗口,并且想要将一些命名空间引用到它中,您需要将输出模式设置为 Windows 应用程序,并创建一个什么也不做的程序。

  1. 在解决方案资源管理器中右键单击您的项目,然后单击属性。
  2. 在应用程序下,将“输出类型”从“类库”更改为“Windows 应用程序”。
  3. 向项目添加以下虚拟类:

Program.cs

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

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

        }
    }
}

1
在«Program.cs»文件中添加命名空间确实为立即窗口解决了问题! - Hi-Angel
除了在 System.Linq 命名空间和 VS2015 lambda 调试的情况下,在尚未执行任何 linq 表达式的源文件中。在您的断点之前添加一行 var temp = Enumerable.Range(1, 1); 并重新启动以解决此问题。 - Martin Capodici
这对我来说是一个可以的解决方案。 - Thorkil Værge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接