目錄
#建立步驟
使用該方式建立,首先要確保你已經安裝了.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