没有控制台时写入标准输出

时间:2016-02-01 16:13:21

标签: c#

Console.Write *在与控制台应用程序一起使用时,或者在连接了控制台的窗口化应用程序中按预期工作。

但是,如果我创建一个没有控制台的应用程序并从命令行运行它,它就不会按预期输出。当程序仍在运行时,它似乎异步启动应用程序,因为提示重新出现。

如何以这样的方式输出文本输出将出现在连接的控制台或运行它的命令提示符中?或者,如何以正确等待的方式运行应用程序并捕获预期的输出?

2 个答案:

答案 0 :(得分:3)

考虑使用Logger框架,而不是依赖于Console。日志框架提供了各种方式来使用日志,因此您无需更改代码就可以决定哪种方式最适合您。

例如,如果您使用的日志框架设置为控制台应用程序将日志消息输出到控制台,则只需更改一个配置选项即可将其输出到一个文件,即使你没有打开控制台,你也可以使用像Baretail这样的工具来观看。或者,您可以轻松地将配置更改为输出到System.Diagnostics.Debug,以便它显示在Visual Studio输出窗口中。

答案 1 :(得分:0)

如果您只是希望调试输出出现在Visual Studio中,请在应用程序运行时使用System.Diagnostics.Debug.WriteLine()输出到VS中的“立即”窗口。 Wrap在“IF”预编译器指令中,因此在编译为非调试版本时不会发生。如果当前构建目标没有设置“DEBUG”标志(如默认的“Release”构建目标),编译器将完全忽略“IF”中的任何行。

#if DEBUG
    System.Diagnostics.Debug.WriteLine()
#endif