立即窗口,“表达式无法计算......”

44

当我尝试在设计时评估立即窗口中的表达式时,出现错误:

在设计模式下无法评估该表达式。

如果我在调试模式下编译ASP.NET项目并尝试运行它,我会得到另一个错误:

在运行模式下无法评估该表达式。

为什么会出现这些错误?我以前使用过立即窗口,即使在设计模式下也能正常工作。


你想要评估哪个表达式? - Fredrik Mörk
1
我可以处理任何表达式,甚至是2+2。 - Tomas
4个回答

32
假设您在即时窗口中没有漏掉">"运算符,如果您试图在多项目解决方案甚至Web项目的设计时间中评估表达式,则可能会出现问题。
根据MSDN
如果您尝试在不是解决方案启动项目的项目中评估函数并收到错误消息,请尝试在“解决方案资源管理器”中选择该项目,然后再次尝试评估。
另外:
您无法在需要启动执行环境的项目类型中使用设计时表达式评估,包括Visual Studio Tools for Office项目、Web项目、Smart Device项目和SQL项目。

26
为了在立即窗口中使用命令或查看本地窗口的对象,您还必须处于断点状态。 - northben
2
这不正确,@northben!只需在解决方案资源管理器中选择一个库项目(如bflow1所说),然后在立即窗口中键入1+1即可执行! - Nuno Agapito
1
我认为问题在于即时窗口在我的应用程序运行时不会评估表达式,除非它处于断点状态。现在我主要在Linux上进行Python开发,所以无法轻松打开VS进行验证。但无论如何,如果您已经使其正常工作,那太好了! - northben
1
仅供纪念(这是对上面断点注释的一点啰嗦更正):在异常被抛出时,您也可以使用立即窗口。 - user
2
@bflow1 在即时窗口中,这个>运算符是什么? - Csaba Toth
显示剩余2条评论

6
值得注意的是,即时窗口的行为取决于您使用的Visual Studio版本。如果我在Visual Studio 2013 Express for Web中尝试评估一个简单的表达式,例如?2+2,我会收到“在设计模式下无法评估表达式”的错误消息;然而,在Visual Studio 2013 Professional中,该表达式会在非调试模式下评估为4

4
正如northben在评论中指出的那样,如果你尝试在应用程序未运行时访问即时窗口中的属性,则可能会收到以下错误提示:

在设计模式下无法评估表达式。

因此:
  1. 设置一个断点,在应用程序将通过该文件运行;
  2. 等待应用程序执行停止(由断点或异常引起),或手动触发它(例如:转到URL);
  3. 在即时窗口中键入您想要访问的属性(例如 GlobalConfiguration.Configuration)--如果该属性存在于该上下文中,则现在应该为您提供正确的结果。如果不存在,则会得到以下提示:

    在运行模式下无法评估表达式。

简单来说,只要确保您在正确的上下文中访问属性即可。

0
在我的情况下,在启用本机调试后,我在使用Excel Interop时收到了此错误。然后在调试模式下,我尝试了这个:
?xlworkbook.sheets(1).name

进程挂起了,我没有收到任何答案,之后每一件事情,例如?2+2都给了我这个错误:

在运行模式下无法评估表达式

为了再次能够使用调试功能,我必须禁用本地调试


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接