【发布时间】:2012-03-18 13:24:31
【问题描述】:
我在视图模型中有以下代码:
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);
}
}
代码文件顶部的usings之一是System,其中包含Math。
如果我在 Watch 窗口中查看 Math.Sin(Theta)(通过选择代码、右键单击并选择“Add Watch”),我会收到以下错误:
当前上下文中不存在名称“Math”
我想知道的是:
- 这是 Visual Studio 2010 的预期/默认行为吗?我可以发誓这从来都不是问题,但也许它一直都是这样工作的,而我不知何故从未注意到。
- 如果出现此错误是不正常的,您是否想过问题可能是什么? Visual Studio 中有上百万种设置,我不知道从哪里开始。
我应该注意到这个问题与this 有点相似,但我没有遇到任何问题,我将鼠标悬停在我的局部变量上,而且我没有使用 PostSharp。
编辑
我刚刚尝试将我的所有 Visual Studio 设置重置为默认值,但我仍然遇到同样的错误。如果有人想在 Visual Studio 中尝试一个简单的测试,我只想知道如果您为 Math.Sin(1) 添加手表是否会出现错误。
编辑 2
这里有几个屏幕截图来展示我的体验:
编辑 3
有趣的是,如果我在 Watch 窗口中输入 Math.,intellisense 可以工作,但如果我完成表达式,我仍然会收到错误:
编辑 4
解决 BACON 的问题:
- 我在使用 QuickWatch 和 Immediate 时得到相同的行为。
- 关闭再重新打开所有窗口并不能解决问题。
- 我正在使用 Visual Studio 2010 Professional(版本 10.0.40219.1 SP1Rel)
- 我尝试针对 .NET 4.0 客户端配置文件和完整的 .NET 4.0。没区别。我创建了一个针对 .NET 4.0 客户端配置文件的控制台应用程序(而不是 WPF 应用程序),最后没有发生错误。因此,WPF 可能是一个问题(或 WPF 与某些第三方库)。 (接下来会检查。)
【问题讨论】:
-
如果你在
System.Math.Sin(1)添加手表会发生什么? -
@BACON,效果很好。 (不过对于更深的命名空间来说,这会很痛苦。)
-
快速观看和即时窗口是否表现出相同的行为?如果您完全关闭所有 Watch 窗口并从“调试”菜单重新打开它们,这会影响什么吗?您使用的是哪个版本的 Visual Studio 2010?您是否安装了 Service Pack 1?无论您的应用程序面向哪个版本的 .NET,这种情况都会发生吗?
-
@BACON,请参阅我的编辑(编辑 4)。您的任何建议都没有解决问题,但您的最后一个建议给了我尝试控制台应用程序(而不是 WPF)的想法,并且至少让错误停止发生。
-
@BACON,找出问题所在(请参阅下面的答案)。感谢您的帮助!
标签: c# visual-studio visual-studio-2010 debugging mono.cecil