【发布时间】:2013-03-22 06:36:22
【问题描述】:
我有一个 C# windows 服务。在该服务代码中,我定义 Main() 并捕获各种参数。如果 arg 是“安装”,我会调用代码来安装服务。请注意,当安装 arg 时,我没有运行服务,只是安装它,所以在我看来,这只不过是一个控制台应用程序。
当我在 vs.net 2012 中调试代码时,我在调试窗口中看到了我的所有 Console.WriteLine() 输出。我相信这是因为 VS.NET 将 STDOUT 映射到调试窗口。
但是如果我打开命令提示符并运行命令行myservice.exe install,控制台窗口没有输出。如果我运行myservice.exe install > out.txt,我会在 out.txt 中看到所有输出。发生了什么?如何让 Main() 代码实际将输出发送到控制台窗口?
【问题讨论】:
-
Err... 不是
> out.txt将输出重定向到文件的全部意义吗?如果你只执行myservice.exe install会发生什么? -
考虑使用log4net、nlog等日志框架轻松切换输出
-
slolife 根据我的经验,请检查您在 VS2012 中的项目设置。我的感觉是,您可能已经选中了禁用
console视图的选项。 -
是的,
> out.txt确实会转到文件,但如果我不添加,控制台中就没有输出。 -
请告诉我
disable console view选项在哪里,我没看到。
标签: c# .net command-line windows-services stdout