- サービス化のためのパッケージを導入する
dotnet add package Microsoft.Extensions.Hosting.WindowsServices
- コードを書き換える
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.SetMinimumLevel(LogLevel.Trace);
})
.UseNLog()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
// サービス化のための処理を追加
// この処理を追加しても dotnet run での実行や Linux での実行は問題なく行うことができる
.UseWindowsService();
- ビルドする
dotnet publish -c Release -o ./publish
- ビルドした実行ファイルをサービスに登録する
# 管理者権限の PowerShell
$binaryPath = (Resolve-Path "./publish/dotnet-service-sample.exe").Path
new-service -Name dotnet-service-sample -BinaryPathName $binaryPath