dotnet core Worker ServiceのWindows Service化

dotnet core(.NET 5も含む)のWorker ServiceをWindowsのServiceとして動作させる例を見つけたのでメモ。

Worker Serviceは下記コマンドで作成する。

dotnet new worker -o <プロジェクト名>

通常は、上記によって作成されたWorker.csに処理を付け加えればOKなのだが、Windows Service化させたい場合は、プロジェクトにMicrosoft.Extensions.Hosting.WindowsServicesパッケージを追加する必要がある。

dotnet add <プロジェクト名> package Microsoft.Extensions.Hosting.WindowsServices

さらに、Program.cs中のCreateHostBuilderに.UseWindowsService()を追加する。

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .UseWindowsService()
        .ConfigureServices((hostContext, services) =>
        {
            services.AddHostedService<Worker>();
        });
}

後は、Worker.csに処理を追加して、デバッグ後、下記コマンドでサービス登録を行う。(これはWindowsのコマンド)

sc create <サービス名> binPath= 実行ファイルパス [オプション...]

登録が済めば、MMCコンソールの「コンピューターの管理」-「サービスとアプリケーション」-「サービス」からも起動・停止や設定変更が可能。

単純なサービスの開始や停止は下記コマンドでも操作可能。

sc start <サービス名>
sc stop <サービス名>

.NET Framework時代のサービス作成より楽だね。

takezou について

ソフトウェア開発会社(ITと言う言葉は大嫌い)で働く、元技術者。 未だに、社内システム位は作ってますが・・・ プログラミング言語はC#が好き。
カテゴリー: .NET, C#, dotnetcore, 技術系 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください