2012-02-29 43 views
8

我在一個視圖模型下面的代碼:在代碼文件的頂部Visual Studio的監視窗口沒有考慮到usings

public Point Location 
{ 
    get 
    { 
     var rangePixels = Range * PixelsPerMile; 
     var xCoordinate = OwnLocation.X * MapScale + rangePixels * Math.Cos(Theta); 
     var yCoordinate = OwnLocation.Y * MapScale - rangePixels * Math.Sin(Theta); 
     return new Point(xCoordinate, yCoordinate); 
    } 
} 

其中usings的是System,其中包含Math

如果我在監視窗口中查看Math.Sin(Theta)(通過選擇代碼,右擊,選擇「添加監視」),我收到以下錯誤:

The name 'Math' does not exist in the current context

我想知道的是:

  1. 這是Visual Studio 2010的預期/默認行爲嗎?我可以發誓,這從來沒有成爲一個問題,但也許它總是這樣工作,我從來沒有注意到。
  2. 如果得到這個錯誤是不正常的,對這個問題可能是什麼想法? Visual Studio中有一百萬個設置,我不知道從哪裏開始。

我應該注意到這個問題隱約相似this,但我沒有任何問題,將鼠標懸停在我的本地變量,我沒有使用PostSharp。

編輯

我只是想重置所有我的Visual Studio設置備份到默認,而我仍然得到同樣的錯誤。如果有人想在Visual Studio中嘗試一個簡單的測試,我只想知道如果您爲Math.Sin(1)添加手錶是否出現錯誤。

編輯2

這裏有一對夫婦的屏幕截圖顯示什麼我遇到:

​​

Showing error for Watch

編輯3

國米。有趣,智能感知作品,如果我輸入Math.到監視窗口,但如果我完成的表情,我仍然得到錯誤:

Showing intellisense working

編輯4

爲了解決培根的問題:

  1. 我使用QuickWatch和Immediate獲得相同的行爲。
  2. 關閉並重新打開所有窗口並不能解決問題。我使用Visual Studio 2010專業版(版本10.0.40219.1 SP1Rel)
  3. 我試着將.NET 4.0客戶端配置文件和完整的.NET 4.0作爲目標。沒有區別。我創建了一個面向.NET 4的控制檯應用程序(而不是WPF應用程序)。0客戶端配置文件,最後,錯誤沒有發生。所以,WPF可能是個問題(或者帶有一些第三方庫的WPF)。 (將檢查旁邊。)
+0

如果您在'System.Math.Sin(1)'上添加手錶會發生什麼? – BACON 2012-02-29 03:10:06

+0

@BACON,工作正常。 (儘管對於更深的命名空間,它會變得很痛苦。) – devuxer 2012-02-29 03:14:31

+2

快速監視和立即窗口顯示相同的行爲嗎?如果您完全關閉所有Watch窗口並從「調試」菜單重新打開它們,是否會影響任何內容?你正在使用什麼版本的Visual Studio 2010?您是否安裝了Service Pack 1?無論您的應用程序針對哪個版本的.NET,都會發生這種情況嗎? – BACON 2012-02-29 03:26:57

回答

6

看來,罪魁禍首是第三方庫執行IL編織(Fody.PropertyChanged)。

如果我沒有這個庫創建一個新的WPF項目,我可以在監視窗口中使用Math.Sin()。一旦我安裝PropertyChanged,我開始得到「在這種情況下不可用」的錯誤。

感謝@BACON讓我找到正確的道路來弄清楚這一點。

這裏有一個問題,我貼在的PropertyChanged網站的鏈接:

http://code.google.com/p/propertychanged/issues/detail?id=6&thanks=6&ts=1330494634

編輯

而且後來,事實證明這很可能是在單聲道塞西爾,一個錯誤,這錯誤PropertyChanged使用:

https://github.com/jbevain/cecil/issues/90

1

我這樣做在豆蔻測試應用程序,並在構造..

enter image description here

試圖把手錶上的數學讓我看到的值E和PI。 你不能把一個仙。 把一個放在val上就行了。

所以,不,我不認爲這是非常正常的,除非你點擊了錯誤的名字。即,不是變量,但「仙」部分...

這裏就是我強調了整個事情...

enter image description here

+0

謝謝,但我需要知道如果你爲'Math.Sin(val)'做手錶會發生什麼。單單爲'val'做手錶不是我的問題。 – devuxer 2012-02-29 02:56:36

+0

嗯...好吧,我突出了整個事情「Math.Sin(val)」,並得到了一個手錶,顯示值爲0.84147 .... 對不起,沒有很好地閱讀這個問題。 – pennyrave 2012-02-29 03:01:39

+0

剛剛爲我的問題添加了一個編輯,希望能夠讓我的問題更清楚。 – devuxer 2012-02-29 03:06:46