变量在当前上下文中不存在

时间:2010-07-28 14:19:17

标签: c#

我有一个相当奇怪的情况,这种情况必定会令人惊讶地显而易见,但它让我感到难过。

很简单,我正在尝试将一些配置数据加载到我的应用程序中,如下所示:

namespace XMLGrabberCS
{
class Grabber
{

    public static void Main()
    {
        string test = "test";
        string serverName = ConfigurationManager.AppSettings["ServerName"];
        try
        {
            //do stuff...

非常简单的东西,除非您查询(即通过Quick Watch)任一变量,否则会出现variable doesn’t exist in current context错误。

如果你看ConfigurationManager.AppSettings["ServerName"],它确实会返回正确的值...

这到底是怎么回事?

3 个答案:

答案 0 :(得分:3)

当你尝试在Quick Watch中使用它时,你在哪里?如果您当前没有调试Main方法,那么它绝对正确 - 该变量不存在。

在Stack Trace视图中,您可以设置您感兴趣的堆栈级别。如果使用“Main”方法双击堆栈框架,它应该显示没有问题的变量。不幸的是,据我所知,在Quick Watch窗口打开时你无法做到这一点。

答案 1 :(得分:3)

以后在代码中引用的字符串是什么?如果不是,它们可能会被优化掉(如果您正在进行调试,则不太可能,但值得检查)。

答案 2 :(得分:1)

当您查看变量时,调试器是否在上下文中停止了?
由于ConfigurationManager对应用程序是全局的,因此无论上下文如何都可以工作,所以这并不奇怪。