2015-10-20 43 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