使用.NET Core創建Windows服務詳細步驟
- 2020 年 10 月 23 日
- 筆記
- 【.Net Core 相關】
#創建步驟
使用該方式創建,首先要確保你已經安裝了.NET Core 3.0或以上版本 . 但是如果你想要在.NET Core 2.x項目中使用這個方式,應該是行不通的。
1、使用Visual Studio創建
打開Visual Studio,創建新項目,找到Worker Service模板。
2、使用命令行創建
dotnet new worker
#項目結構說明
創建出來的項目,包含兩個主要文件。其中Program.cs文件是應用的啟動「引導程式」。另外一個文件是worker.cs文件,在這個文件中,你可以編寫你的服務邏輯。同時在依賴項的包中引入了Microsoft.Extensions.Hosting包。
#將應用轉換成Window服務
當前項目可在linux下完美運行,但是還不能以服務的方式在windows上安裝運行。
1、引入Microsoft.Extensions.Hosting.WindowsServices
為了將應用轉換成Windows服務,我們需要使用如下命令引入一個包。
Install-Package Microsoft.Extensions.Hosting.WindowsServices
2、修改程式碼
需要修改Program.cs文件,添加UseWindowsService()方法的調用。
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args)
{
var host = Host.CreateDefaultBuilder(args);
//判斷當前系統是否為windows
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
host.UseWindowsService();
}
return host.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
}
}
程式碼中增加了對作業系統的判斷,從而可以兼容windows和linux。
3、發布
使用Visual Studio發布:
使用命令行發布:
dotnet publish -r win-x64 -c Release
4、使用SC命令在windows上安裝服務
sc create TestService BinPath=D:\dir\WindowsServiceExample.exe
也可以創建一個bat文件,用來安裝windows服務,如下:
@echo off
@title 安裝windows服務
@echo off
echo= 安裝服務!
@echo off
@sc create worktest binPath= "%~dp0WorkerService1.exe"
echo= 啟動服務!
@echo off
@sc start worktest
@echo off
echo= 配置服務!
@echo off
@sc config worktest start= AUTO
@echo off
echo= 成功安裝、啟動、配置服務!
@pause
將bat文件放到服務文件同目錄,修改下服務名和exe名字即可雙擊運行安裝。
SC其他操作服務的常用命令:
sc start TestService
sc stop TestService
sc delete TestService