【发布时间】: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