8

根据微软的说法:“即时窗口在设计时用于调试和评估表达式、执行语句、打印变量值等等。”

注意它说“在设计时”。我也已经阅读了网络上的其他声明。

但是,当有人问他们为什么会得到“在设计模式下无法评估表达式”时。错误,每个人总是说它只能在调试模式下工作。

我可以理解当它们引用文本框框值等项目时,有些东西在设计模式下不起作用。但是我真的不明白为什么我必须设置一个断点,运行我的应用程序,然后等待它到达断点,只是为了找出是什么1 + 1

我承认因为我来自 Visual Basic 6.0 而感到沮丧。在那里我可以在设计模式下打印1 + 1和获取。2我还可以在设计模式下调用公共函数并获得答案。

所有这些都来自我寻找类型转换的答案。因为我在网上找不到答案,所以我决定最快和最简单的方法是在即时窗口中测试一些语句 REAL QUICK 看看哪个有效。

使用即时窗口时.NET 是不是倒退了一步?

4

3 回答 3

4

我理解你的沮丧。幸运的是,Roslyn(微软的开源 C# 编译器)的开发允许在 Visual Studio 中拥有所谓的“交互式 Windows”。您需要安装 Roslyn,经过一些简单的设置步骤后,您可以在该窗口中评估 C# 表达式: https ://github.com/dotnet/roslyn/wiki/Interactive-Window

它与即时窗口非常不同,因为 REPL 循环可以在一定程度上被隔离,但似乎您甚至可以在某种程度上与您的项目进行交互:C# 交互窗口可以与我的代码交互吗?

这甚至可以追溯到 2011-2012 年,它是自 2015 年底以来 Visual Studio 2015 CTP1 的默认部分:View -> Other Windows -> C# Interactive

于 2016-02-23T08:10:24.160 回答
1

简而言之,这取决于您的应用程序的上下文,即您当前在解决方案资源管理器中选择了哪个解决方案及其项目类型。例如,Web 项目不会在设计时评估即时表达式,因为它需要设置该环境,但是,库和控制台类型的项目会。

MSDN 状态:

“在为设计时表达式评估建立上下文时,Visual Studio 会引用解决方案资源管理器中当前选择的项目。如果在解决方案资源管理器中未选择任何项目,Visual Studio 会尝试针对启动项目评估该函数。如果无法在当前上下文,您将收到一条错误消息。如果您尝试在不是解决方案启动项目的项目中评估函数并且收到错误消息,请尝试在解决方案资源管理器中选择该项目并再次尝试评估。 "

但是,如果您在一个 Web 项目中,则需要打断点才能在即时窗口中计算表达式。

这可能包含在其他答案中

于 2015-05-12T16:23:07.220 回答
0

对我来说,我可以做你在 Visual Studio 2008 的即时窗口中提到的任何事情,比如找出 1+1 的总和或找出“sdfd”的长度。长度等可以从即时窗口完成。所以这不是.NET 的倒退。

于 2012-04-18T18:33:38.370 回答