打开命令行工具(例如:PowerShell、CMD、或者终端),然后输入以下命令创建一个新的Worker Service项目:
dotnet new worker -n MyWorkerService
这个命令将会创建一个名为"MyWorkerService"的新项目。
对于Windows服务,我们需要添加Microsoft.Extensions.Hosting.WindowsServices
NuGet包到我们的项目。在项目目录下(MyWorkerService
),运行以下命令:
dotnet add package Microsoft.Extensions.Hosting.WindowsServices
这个软件包将为我们提供所需的扩展方法来注册Windows服务。
现在我们需要设置.NET Core host以便在Windows服务中运行。更新Program.cs
文件如下:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
UseWindowsService()
方法是Microsoft.Extensions.Hosting.WindowsServices
库提供的,它可以让应用程序在Windows服务中运行。
在这个示例中,服务逻辑被定义在Worker
类中。你可以根据你的需求修改它。
你可以通过运行以下命令进行发布:
dotnet publish --configuration Release --output ./publish
该命令将会创建一个发布目录,并将所有必要的文件放入该目录。
在你的服务机器上,打开管理员模式的命令提示符,然后运行以下命令来安装并启动服务:
sc create MyWorkerService binPath= "C:\path\to\your\service\MyWorkerService.exe"
sc start MyWorkerService
请确保替换 "C:\path\to\your\service\MyWorkerService.exe"
为你实际发布服务的路径。
OnStart()
方法中放入太多初始化代码。如果需要较长时间来启动服务,Windows可能会认为服务未能正确启动。