我在视图模型中有以下代码:
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'
我想知道的是:
我应该注意到这个问题与this模糊地相似,但是我没有任何问题将鼠标放在我的局部变量上,而且我没有使用PostSharp。
修改
我刚尝试将所有Visual Studio设置重置为默认值,但我仍然遇到同样的错误。如果有人想在Visual Studio中尝试一个简单的测试,我只想知道如果你为Math.Sin(1)
添加一个手表就会出现错误。
修改2
以下是几个屏幕截图,以显示我正在体验的内容:
编辑3
有趣的是,如果我在Watch窗口中输入Math.
,intellisense就有效,但是如果我完成表达式,我仍然会收到错误:
编辑4
解决BACON的问题:
答案 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使用它:
答案 1 :(得分:1)
我是在一个litte测试应用程序中,在构造函数中完成的。
试着把手表放在数学上让我看到E和PI的值。 你不能把一个放在罪上。 把一个放在val上就可以了。
所以,不,我不认为这是正常的,除非你点击了错误的名字。即,不是变量,而是“罪”部分......
这是我强调整个事情......