yanom blog

様々な技術について書きます

.NET CoreでWindowsサービスを作る

今回は、.NET CoreでWindowsのサービスアプリを作って見たいと思います。

前提

サービスの雛形を作る

  • 以下コマンドで雛形が生成されます

$ dotnet new worker -o 任意のプロジェクト名

Windowsでサービス起動させるために一部修正する

  • packageの追加

$ dotnet add .\<アプリ名>.csproj package Microsoft.Extensions.Hosting.WindowsServices

  • コード修正
public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
    .ConfigureServices((hostContext, services) =>
    {
        services.AddHostedService<Worker>();
    }).UseWindowsService();  //Windowsで実行する場合はここを追加する必要がある

プロジェクトのビルド

$ dotnet publish -o 任意のフォルダ名

サービス登録

  • パスは絶対パスで指定してください
  • Project.exeはビルドで指定したフォルダ内に生成されています

$ sc.exe create <サービス名> binPath=<Project.exe>

起動

$ sc.exe start <サービス名>

確認は、Windowsのサービス管理画面等で行ってください。