我在 View 模型中有以下代码:

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

如果在“监视”窗口中查看Math.Sin(Theta)(通过选择代码,右键单击并选择“添加监视”),则会出现以下错误:



我想知道的是:
  • 这是Visual Studio 2010的预期/默认行为吗?我可以发誓,这从来都不是问题,但也许一直以来都是这样,而我却从来没有注意到。
  • 如果出现此错误是不正常的,那么对问题可能有什么想法? Visual Studio中有上百万个设置,我不知道从哪里开始。

  • 我应该注意,这个问题与this大致相似,但是我在使用本地变量时没有任何问题,也没有使用PostSharp。

    编辑

    我只是尝试将所有Visual Studio设置重置为默认值,但仍然遇到相同的错误。如果有人想在Visual Studio中尝试简单的测试,我只是想知道如果添加Math.Sin(1)监视程序是否出错。

    编辑2

    这是几个屏幕截图,以显示我正在经历的事情:



    编辑3

    有趣的是,如果我在“监视”窗口中键入Math.,则intellisense可以工作,但是如果我完成了表达式,仍然会收到错误消息:

    编辑4

    要解决培根的问题:
  • 我在QuickWatch和Instant中得到了相同的行为。
  • 关闭并重新打开所有窗口都无法解决问题。
  • 我正在使用Visual Studio 2010 Professional(版本10.0.40219.1 SP1Rel)
  • 我尝试定位.NET 4.0客户端配置文件和完整的.NET 4.0。没什么区别。我创建了一个针对.NET 4.0客户端配置文件的控制台应用程序(而不是WPF应用程序),最后,没有发生该错误。因此,WPF可能是个问题(或某些第三方库的WPF)。 (接下来将检查该内容。)
  • 最佳答案

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

    如果我创建了没有此库的新WPF项目,则可以在“监视”窗口中使用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

    10-08 06:58
    查看更多