Visual Studio Watch窗口没有考虑使用

时间:2012-02-29 02:15:51

标签: c# visual-studio visual-studio-2010 debugging 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);
    }
}

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

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

  

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

我想知道的是:

  1. 是Visual Studio 2010的预期/默认行为吗?我可以发誓,这从来就不是一个问题,但也许它总是那样工作,我不知何故从未注意过。
  2. 如果得到这个错误是不正常的,那么对问题可能是什么的任何想法? Visual Studio中有一百万个设置,我不知道从哪里开始。
  3. 我应该注意到这个问题与this模糊地相似,但是我没有任何问题将鼠标放在我的局部变量上,而且我没有使用PostSharp。

    修改

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

    修改2

    以下是几个屏幕截图,以显示我正在体验的内容:

    Adding Math.Sin(1) to watch

    Showing error for Watch

    编辑3

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

    Showing intellisense working

    编辑4

    解决BACON的问题:

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

2 个答案:

答案 0 :(得分:6)

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

如果我创建一个没有此库的新WPF项目,我可以在Watch窗口中使用Math.Sin()。安装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

答案 1 :(得分:1)

我是在一个litte测试应用程序中,在构造函数中完成的。

enter image description here

试着把手表放在数学上让我看到E和PI的值。 你不能把一个放在罪上。 把一个放在val上就可以了。

所以,不,我不认为这是正常的,除非你点击了错误的名字。即,不是变量,而是“罪”部分......

这是我强调整个事情......

enter image description here