我正在尝试将.Net Core Console应用程序设置为服务。使用.Net标准我通常使用Topshelf,但这似乎不支持.Net Core。
由于Topshelf不是一个选项,我该怎么办才能将.Net Core Console应用程序作为Windows服务运行?
我来访问https://github.com/PeterKottas/DotNetCore.WindowsService,这是生产环境的可行替代品吗?
答案 0 :(得分:7)
有几个选择:
使用Windows Compatibility Pack将ServiceBase
及相关API带回.NET Core,因此TopShelf可以开箱即用。 (在写作时,包装在RC中,预定稳定释放大约一周之后)
TopShelf现在支持.NET Core,基于新版.NET Core版本的兼容性包/ Windows兼容性。
https://github.com/PeterKottas/DotNetCore.WindowsService似乎适用于很多用户,因此我建议您尝试一下。
(3)中的库是围绕DasMulli.Win32.ServiceUtils的一个很好的API,我为我们公司写的是为了能够在生产中部署自包含的.NET核心应用程序。到目前为止,我们没有遇到任何问题。
抽象Windows服务基础架构并运行任意程序的其他服务主机 - 例如Non-Sucking Service Manager。请注意,这可能无法为响应Stop命令而优雅地关闭。
答案 1 :(得分:2)
在.net核心中,您没有选择作为服务运行的选项。但是,如果您对控制台应用程序进行容器化,则可以将容器部署到任何地方,这与作为服务运行相同。从.NET Core 2.1开始,您可以在控制台应用程序中使用Host和HostBuilder来管理DI,日志记录,正常关闭等。看看:
答案 2 :(得分:0)
在我们公司,我们使用Non-Sucking Service Manager到目前为止我没有遇到任何问题,你可能想看看。