2015-10-20 79 views
0

我有一些任意的代码。例如以下内容:VS不能显示变量的信息

class MyClass 
{ 
    private MyClass() { } 
    public static readonly MyClass Instance = new MyClass(); 
    public Hashtable DoSomething() {return new Hashtable {{"key", "value"}};} 
} 

var test = MyClass.Instance.DoSomething(); 

现在,当调试和徘徊test智能感知doesn't显示任何东西。同时向该变量添加手表也不起作用。相反,消息

名称“测试”并不在当前的背景下

出现存在。我已经重建了解决方案,关闭了VS并重新打开了它。但是,如果不进行调试,我会在intellisense中获得该变量的类型信息。

注意:上面的代码可以在我的测试解决方案中工作,但实际的代码更复杂。我已尽力尽量简化这一点,假设有些低估,因为错误难以重现。不过也许任何人在VS上都有类似的问题。

编辑:代码优化中的项目设置中禁用(属性 - >建设 - >优化代码)

+0

我想到的第一件事是:你确定你是为'Debug'而不是'Release'构建的吗? – TTT

+0

如果你的意思是项目属性 - >生成 - >配置设置为“活动(调试)”或类似的东西,那么它实际上是建立dor调试。 – HimBromBeere

+0

@TTT如果它的发布有什么问题? – aguetat

回答

1

编译器最有可能的优化变量了,因为它永远不会在本地使用。

使用以任何方式变量来规避这样的:

 var test = MyClass.Instance.DoSomething(); 
    Debug.WriteLine(test); // <=== Set breakpoint here 

我不是100%肯定,但我认为优化也影响到这一点。所以可以肯定的是,如果你有这些问题,请关闭它们。

+0

这有效,但它真的很烦人。 – HimBromBeere

+0

这就是它不幸的方式...... – thumbmunkeys

+0

是因为'test'从来没有在本地使用? – HimBromBeere