8

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

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)在 Watch 窗口中查看(通过选择代码、右键单击并选择“Add Watch”),我会收到以下错误:

当前上下文中不存在名称“数学”

我想知道的是:

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

我应该注意到这个问题与此模糊相似,但我没有任何问题将鼠标悬停在我的局部变量上,而且我没有使用 PostSharp。

编辑

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

编辑 2

这里有几个屏幕截图来显示我正在经历的事情:

添加 Math.Sin(1) 来观看

显示手表错误

编辑 3

有趣的是,如果我Math.在 Watch 窗口中输入,智能感知就可以工作,但如果我完成表达式,我仍然会收到错误:

显示智能感知工作

编辑 4

要解决 BACON 的问题:

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

2 回答 2

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

于 2012-02-29T05:52:58.987 回答
1

我在构造函数中的一个小测试应用程序中做到了这一点。

在此处输入图像描述

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

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

这是我强调整个事情的地方......

在此处输入图像描述

于 2012-02-29T02:49:31.873 回答