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

4

我有一个非常奇怪的情况,可能是因为一些惊人显而易见的问题,但我还是被卡住了。

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

namespace XMLGrabberCS
{
class Grabber
{

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

这很简单,但如果您查询任一变量(例如通过快速查看),则会出现“当前上下文中不存在变量”的错误。

如果您观察ConfigurationManager.AppSettings["ServerName"],它确实返回正确的值...

这到底是怎么回事?


2
你可能在调试一个发布版本吗? - Lasse V. Karlsen
1
首先很明显 - 你正在运行调试版本吗?接下来,这些字符串在代码后面被引用了吗?如果没有,它们可能被优化掉了(如果你在调试中,不太可能,但值得检查)。 - ChrisF
@ChrisF - 你是对的 - 由于某些原因我不想深入讨论,我没有引用它们,但是一旦我引用了它们,问题就解决了。请将您的评论作为答案发布,我会接受它。 - CJM
感谢其他人的建议和支持,这些都是明智的建议,值得其他人注意。但对我来说,今天并不是我的特定问题。同时点赞。 - CJM
3个回答

3

当您在Quick Watch中使用此功能时,您在哪里?如果您当前未调试Main方法,则完全正确-该变量不存在。

在Stack Trace视图中,您可以设置要查看的堆栈级别。如果您双击具有“Main”方法的堆栈帧,则应该可以轻松显示变量。不幸的是,在我看来,您不能在打开Quick Watch窗口时执行此操作。


3

这些字符串是否在代码后面被引用?如果没有,它们可能会被优化掉(如果您处于调试模式,则不太可能,但值得检查)。


这是一个小问题,但我之前没有注意到它...谢谢。 - CJM

1

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


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