我有一个相当奇怪的情况,这种情况必定会令人惊讶地显而易见,但它让我感到难过。
很简单,我正在尝试将一些配置数据加载到我的应用程序中,如下所示:
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"]
,它确实会返回正确的值...
这到底是怎么回事?
答案 0 :(得分:3)
当你尝试在Quick Watch中使用它时,你在哪里?如果您当前没有调试Main
方法,那么它绝对正确 - 该变量不存在。
在Stack Trace视图中,您可以设置您感兴趣的堆栈级别。如果使用“Main”方法双击堆栈框架,它应该显示没有问题的变量。不幸的是,据我所知,在Quick Watch窗口打开时你无法做到这一点。
答案 1 :(得分:3)
以后在代码中引用的字符串是什么?如果不是,它们可能会被优化掉(如果您正在进行调试,则不太可能,但值得检查)。
答案 2 :(得分:1)
当您查看变量时,调试器是否在上下文中停止了?
由于ConfigurationManager
对应用程序是全局的,因此无论上下文如何都可以工作,所以这并不奇怪。