【问题标题】:Immediate Window in Design Mode设计模式下的即时窗口
【发布时间】:2012-04-18 18:21:39
【问题描述】:

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

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

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

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

我承认我是从 Visual Basic 6.0 出来的。在那里我可以在设计模式下打印1 + 1 并获取2。我还可以在设计模式下调用公共函数并获得答案。

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

.NET 在使用即时窗口时会倒退吗?

【问题讨论】:

  • 它确实可以在设计模式下工作,但很尴尬。阅读msdn.microsoft.com/en-us/library/f177hahy(v=vs.100).aspx 以了解限制。然后喝一杯杜松子酒和柠檬水的鸡尾酒放松一下。
  • VB6 在 IDE 中是一种解释型语言。如果你喜欢这种交互,那么你应该去寻找一种使用解释器的语言,而不是像 VB.NET 这样的编译器。 Python、Ruby,几乎所有动态语言。
  • Igby,你有最好的解决方案。这主要是一种咆哮,喝酒的想法非常有吸引力。 :-)

标签: visual-studio immediate-window


【解决方案1】:

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

它与即时窗口非常不同,因为 REPL 循环可以在一定程度上被隔离,但似乎您甚至可以在某种程度上与您的项目进行交互:Can the C# interactive window interact with my code?

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

【讨论】:

    【解决方案2】:

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

    MSDN states:

    "在建立设计时表达式评估的上下文时, Visual Studio 引用解决方案中当前选择的项目 探险家。如果在解决方案资源管理器中未选择任何项目,则 Visual Studio 尝试根据启动项目评估函数。 如果无法在当前上下文中评估该函数,您将 收到错误消息。如果您尝试评估函数 在一个不是解决方案的启动项目的项目中,而您 收到错误,尝试在解决方案资源管理器中选择项目并 再次尝试评估。”

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

    This may be covered in other answers

    【讨论】:

      【解决方案3】:

      对我来说,我可以执行您在 Visual Studio 2008 的即时窗口中提到的任何操作,例如找出 1+1 的总和或找出“sdfd”的长度。长度等可以从即时窗口完成。所以这并不是 .NET 的倒退。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-18
        • 2011-06-21
        相关资源
        最近更新 更多