.Net core 2.0控制台应用程序作为Windows服务

时间:2018-05-22 22:30:23

标签: c# console-application .net-core-2.0

我正在尝试将.Net Core Console应用程序设置为服务。使用.Net标准我通常使用Topshelf,但这似乎不支持.Net Core。

由于Topshelf不是一个选项,我该怎么办才能将.Net Core Console应用程序作为Windows服务运行?

我来访问https://github.com/PeterKottas/DotNetCore.WindowsService,这是生产环境的可行替代品吗?

3 个答案:

答案 0 :(得分:7)

有几个选择:

  1. 使用Windows Compatibility PackServiceBase及相关API带回.NET Core,因此TopShelf可以开箱即用。 (在写作时,包装在RC中,预定稳定释放大约一周之后)

  2. TopShelf现在支持.NET Core,基于新版.NET Core版本的兼容性包/ Windows兼容性。

  3. https://github.com/PeterKottas/DotNetCore.WindowsService似乎适用于很多用户,因此我建议您尝试一下。

  4. (3)中的库是围绕DasMulli.Win32.ServiceUtils的一个很好的API,我为我们公司写的是为了能够在生产中部署自包含的.NET核心应用程序。到目前为止,我们没有遇到任何问题。

  5. 抽象Windows服务基础架构并运行任意程序的其他服务主机 - 例如Non-Sucking Service Manager。请注意,这可能无法为响应Stop命令而优雅地关闭。

答案 1 :(得分:2)

在.net核心中,您没有选择作为服务运行的选项。但是,如果您对控制台应用程序进行容器化,则可以将容器部署到任何地方,这与作为服务运行相同。从.NET Core 2.1开始,您可以在控制台应用程序中使用Host和HostBuilder来管理DI,日志记录,正常关闭等。看看:

Hosting services in .NET Core console application

答案 2 :(得分:0)

在我们公司,我们使用Non-Sucking Service Manager到目前为止我没有遇到任何问题,你可能想看看。

相关问题