6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

C#でサービスを作る(.NET6.0)

Last updated at Posted at 2022-01-06

Windowsサービス関連記事

やりたいこと

以前、C#(.NET5)でサービスを作ったが、.NET6でも同じことができるんだろうとタカをくくっていたら、GUI(VisualStudio2022)のプロジェクトのテンプレートに、VisualStudio2019(.NET5)にあったワーカーサービスのテンプレートがなくなっていた。

VS2019
image.png
VS2022
image.png

どないしたらええねんとなったので調べた。

やり方

dotnet new コマンドで使える、.NETの既定のテンプレートを使用する。

前提

VisualStudio2022 / .NET6.0

手順

試しに、デスクトップに「TestSolution」フォルダを作り、さらにその中に「TestProject」フォルダを作成し、そこにWorkerのプロジェクトを作成してみることにする。

コマンドプロンプトを開いて、プロジェクトを作りたいフォルダにcdでまず移動する。
そこで、下記のコマンドを入力する。

dotnet new worker -f net6.0

そうすると、こんな感じになる。
image.png
フォルダの中には、下記のようなものができる。
image.png
この時点では、.csprojファイルはあるが、.slnファイルはない。

.csprojファイルをVisualStudio2022で開くと、いつものような感じでソリューションが開く。
この時点でもまだ.slnファイルはないが、「×」を押してVisualStudioを閉じようとしたときにソリューションを保存するか聞かれるので、そのときに保存を行うと、.slnファイルができる。

※その際にでる「名前を付けてファイルを保存」Dlgでは、デフォでは.csprojと同じ階層が表示されてる。
image.png
個人的に、.slnファイルは、

ソリューションのフォルダ
├─.xxx.sln
└─Projectのフォルダ
 ├─ test.csproj
 ├─ Program.cs.cs
  ・・・

みたいな感じになっててほしいので、.csprojの一個上の階層に.slnは保存する。


あとは、.NET5のときとほぼ同じ内容がプロジェクトの中にあるので、
下記のあたりに行いたい処理を書いていく。

image.png

サービスとして動かすときのメモ

やることは.NET5のときとほぼ同じだが、.NET6テンプレートだとtopレベルステートメントで書かれてたりして微妙にコードが違うので、一応program.csの編集部分をメモ。
.NET5のときのメモ

program.cs
using TestProject;

IHost host = Host.CreateDefaultBuilder(args)
    .ConfigureServices(services =>
    {
        services.AddHostedService<Worker>();
    }).UseWindowsService()//★ここを追加
    .Build();

await host.RunAsync();

気づいたことメモ?

今回プロジェクトはdotnet newコマンド、ソリューションはVisualStudio2022で作ったが、もしかしたらソリューションをまずdotnetのコマンド(dotnet new sln??)で作ってから、その中でdotnet newをするのが正しいやり方なのかも?(未確認)

VisualStudioばかり使ってるので、dotnetコマンド使い慣れてない...

追記:VS2022でもWorkerサービスのテンプレートが使えた

VisualStudioInstallerで、「ASP.NETとWeb開発の必須コンポーネント」というのをインストールしたら、VisualStudio2022のテンプレート選択の中に「ワーカーサービス」が出てきた。

image.png

プロジェクトのテンプレートは、インストールされると
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\ProjectTemplatesの中に入るようで、今回のワーカーサービスは、上のをインストールすると下記に入った。

C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\ProjectTemplates\CSharp\Web\1033

置き場所のフォルダからすると、ワーカーサービスは、「Web開発」向けの様子。知らなかった。(Webサーバーとかを作るために使われるから??)

参考

dotnet new コマンドで使うworkerテンプレート

ターゲットバージョンの指定方法

英語の記事

.NET5でサービス作ったときのじぶんのメモ

テンプレートの保存場所

Workerのテンプレートをインストールできたきっかけの記事

6
5
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?