.Net 核心 2.0 控制台应用程序作为 windows 服务

.Net core 2.0 console app as a windows service

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

由于 Topshelf 不是一个选项,我可以如何 运行 将 .Net Core 控制台应用程序作为 Windows 服务?

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

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

有几个选项:

  1. 使用 Windows Compatibility PackServiceBase 和相关的 API 带回 .NET Core,因此 TopShelf 可能开箱即用。 (该包在撰写本文时处于 RC 状态,并计划在大约一周后稳定发布)

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

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

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

  5. 抽象windows服务基础设施和运行任意程序的其他服务主机——例如Non-Sucking Service Manager。请注意,这可能无法提供正常关闭以响应停止命令的好方法。

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

Hosting services in .NET Core console application