Visual Studio Watch窗口没有考虑使用

dev*_*xer 8 c# debugging visual-studio-2010 visual-studio mono.cecil

我在视图模型中有以下代码:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

代码文件顶部的一个用法是System,其中包含Math.

如果我Math.Sin(Theta)在Watch窗口中查看(通过选择代码,右键单击,并选择"Add Watch"),我收到以下错误:

当前上下文中不存在名称"Math"

我想知道的是:

  1. 这是Visual Studio 2010的预期/默认行为吗?我可以发誓这从来不是一个问题,但也许它总是那样工作,我不知何故从来没有注意到.
  2. 如果得到这个错误是不正常的,那么对问题可能是什么的任何想法?Visual Studio中有一百万个设置,我不知道从哪里开始.

我应该注意到这个问题与类似,但我没有任何问题将鼠标置于我的局部变量上,而且我没有使用PostSharp.

编辑

我只是尝试将我的所有Visual Studio设置重置为默认值,但我仍然遇到同样的错误.如果有人想在Visual Studio中尝试一个简单的测试,我只想知道如果你添加一个手表是否会出现错误Math.Sin(1).

编辑2

这里有几个屏幕截图,以显示我正在经历的:

添加Math.Sin(1)来观看

显示Watch的错误

编辑3

有趣的是,如果我输入Math.Watch窗口,intellisense会起作用,但如果我完成表达式,我仍然会收到错误:

显示intellisense工作

编辑4

解决BACON的问题:

  1. 我使用QuickWatch和Immediate获得相同的行为.
  2. 关闭并重新打开所有窗口并不能解决问题.
  3. 我正在使用Visual Studio 2010 Professional(版本10.0.40219.1 SP1Rel)
  4. 我尝试针对.NET 4.0 Client Profile和完整的.NET 4.0.没有区别.我创建了一个针对.NET 4.0 Client Profile的Console App(而不是WPF应用程序),最后,没有发生错误.因此,WPF可能是一个问题(或WPF与一些第三方库).(接下来会检查.)

dev*_*xer 6

罪魁祸首似乎是执行IL编织的第三方库(Fody.PropertyChanged).

如果我创建一个没有此库的新WPF项目,我可以Math.Sin()在Watch窗口中使用.安装后PropertyChanged,我开始收到"在此上下文中不可用"错误.

感谢@BACON引导我走上正确的道路来解决这个问题.

这是我在PropertyChanged网站上发布的问题的链接:

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

编辑

随后,事实证明这可能是Mono-Cecil中的一个错误,PropertyChanged使用它:

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