更改 Windows 服务项目的输出类型

Changing the output type of a Windows Service project

我目前正在编写的项目需要编写 Windows 服务,因为它需要 运行 无人值守。规范中的一项要求是该服务还应该能够 运行 交互。这不是什么大问题,因为我可以简单地使用反射来获取 OnStart/OnStop 方法并使用 Console.ReadKey() 暂停键盘输入。

真正让我在这里停下来的是,为了做到这一点,我需要将项目的输出类型从 Windows 应用程序更改为控制台应用程序。我希望有人详细了解这两种选择之间的差异,以解释它们之间的差异,以及是否对生产稳定性有任何影响。

如果在交互模式下执行时服务未显示表单,您可以更改输出类型并且不会出现问题。如果需要表格,输出类型应保持 Windows 应用程序。作为一般规则,我总是开始将服务应用程序开发为控制台应用程序。很容易调试。当测试和调试快完成时,我切换到服务应用程序。