【问题标题】:How to see output of a C# console program when running in VS?在 VS 中运行时如何查看 C# 控制台程序的输出?
【发布时间】:2014-12-18 22:42:30
【问题描述】:

我刚刚编写了一个名为 helloworld 的聪明程序。这是一个 C#/.NET 4.5 控制台应用程序。在错综复杂的逻辑嵌套迷宫深处,我们使用了 Console.WriteLine()。

当我在命令行上运行它时,它会运行并且我会看到输出。我可以执行其他命令并弄乱一点,然后向上滚动以再次查看输出。

现在我在 Visual Studio 中,调整源代码(“Hi”比“Hello”更有效)并通过点击 F5 进行测试。会发生一个控制台窗口弹出并立即消失。我不知道程序打印了什么。如何查看输出?

我根本不想修改我的源代码。在寻找解决方案后,我发现有人说要使用 Console.ReadKey() - 但是在命令行上使用该程序会很糟糕。当程序已经完成它的工作时,用户没有真正的理由必须点击一个键。即使我这样做,当控制台窗口在按键后关闭时,输出也会消失。

我不想使用 Debug.WriteLine() 写入 VS 中的输出窗口,但不写入普通输出供最终用户查看。

我发现了 ctrl-F5,它运行程序就好像它有一个最后的 Console.ReadKey() 行,但是仍然存在当我点击任何键时,所有输出都随着窗口消失的问题。三分钟后,我在想“哦,等等,它打印的是‘Hello’还是‘Helo’?”没办法查。

似乎 Visual Studio IDE 应该以某种方式捕获新构建的程序写入其 stdout 或其等效的 Microsoft 的所有内容,并将其显示在其“输出”面板或某些面板中,以供以后审查。也许它确实这样做了,我还不知道它的诀窍?这似乎是数百万 C# 开发人员的共同愿望。

【问题讨论】:

  • 好问题。唯一持久的状态是在输出窗口中,所以听起来你需要写两次。一次到控制台,一次到调试器。
  • 就我个人而言,我不希望 IDE 尝试第二次猜测我想要它做什么,我希望无论从何处执行代码都保持一致的行为。
  • 您听说过 TraceListeners 吗?一个流,有多个可能的目的地。

标签: c# visual-studio console


【解决方案1】:

如果您正在使用 Visual Studio 2019 处理 .NET Core 控制台应用程序(或 .NET Framework via the .NET SDK),现在默认情况下会发生在程序执行后打开控制台窗口的行为:

具体来说:

这应该避免需要向控制台应用程序添加 Console.Read() 调用,以防止控制台窗口在程序完成执行后立即关闭。启动的控制台窗口也会被重新用于后续运行,因此如果您习惯使用 ctrl+f5,那么在您启动应用程序几次后,您将不会有很多控制台窗口需要关闭。

【讨论】:

    【解决方案2】:

    它自动关闭的原因是它运行完程序。如果你想看看它做了什么,让它需要一个新的命令,比如按任意键。 Console.ReadKey();暂停它并等待用户按键继续。将该命令放在您正在执行的指令命令之后,它会暂停它,直到您按下任何键。

    Console.ReadKey(); // 暂停直到你按下任何键

    【讨论】:

      【解决方案3】:

      您也可以按 F10(逐行执行)和 F11(进入函数内部)运行程序。

      另一个选项是在 Visual Studion 中设置断点并按 F5 运行程序 - 它将在下一个断点处停止。断点可以有条件 - 即条件断点。

      【讨论】:

        【解决方案4】:

        一些选项是: 1. 将#if DEBUG 包裹在 Console.ReadKey() 周围 2.直接从打开的终端运行 3. 创建一个测试项目 - 但您需要再次使用 Console.ReadKey() 来阻止它关闭。

        【讨论】:

          猜你喜欢
          • 2020-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多