C#こんにちは、情報システム部の高野です。2.1で汎用ホストなるものが追加されていたのですね。Coreのようにインジェクションなどの設定ができそう!ということでサンプルを作ってみたので手順を書いておきます。汎用ホスト用のテンプレートは今のところ無いのでconsoleで作成します。Codeでプロジェクトを開くと下記のメッセージが表示されると思いますので「Yes」ボタンをクリックして設定ファイルを生成します。them?これでデバッグ実行ができるようになりました。生成されたlaunch.jsonファイルを一部変更します。Codeのターミナルタブに結果が出力されるので確認がしやすいと思います。汎用ホストで実行まずNugetパッケージを追加します。restoreMainメソッドを書き換えます。}}デバッグ実行してもなにも変化はないですが一応、汎用ホストで動いています。Productionが表示されていると思います。これを設定したEnvironmentに変更します。必要なNugetパッケージを追加します。restore.vscode/launch.jsonに環境変数を追加します。]}Mainメソッドに環境変数を読み込む処理を追記します。host.Run();}これで実行するとEnvironmentがDevelopmentになってるはずです。Developmentバッチ処理本体を書くここまでの手順では、まだバッチ処理本体を記述する場所がありません。バッチ処理本体を記述する場所を追加します。バッチ処理を記述するクラスを追加します。}}BatchServiceが実行されるようにMainメソッドに追記します。・・・}これで実行すると下記のように出力されるはずです。environmentが間に入ってきてしまうのは謎です。設定ファイルから設定を読み込むWebホストと同様にappsettings.josnファイルを作成しそこから設定を読み込みます。必要なNugetパッケージを追加します。restore設定用のクラスを追加します。}}appsettings.jsonを追加します。}}Mainメソッドに設定用のJSONファイルを読み込む処理を追加します。・・・}BatchServiceに設定クラスを注入し設定した値を出力します。}}これでappsettings.jsonに登録した設定が出力できたと思います。Environmentに合わせた設定ファイルを読み込むappsettings.Development.jsonファイルを読み込みます。appsettings.Development.jsonを作成します。}}MainメソッドにEnvironment名付きの設定ファイルを読み込む処理を追記します。・・・}ConfigureHostConfiguration内では、環境変数を持つ引数が渡ってこないのでEnvironment.GetEnvironmentVariable関数にてEnvironmentを取得しています。出力結果が、appsettings.Development.jsonで設定したものに変わっていると思います。ログを出力する今までは、Console.WriteLineでコンソールに出力していましたがちゃんとログで出力をしてみます。Nugetパッケージを追加します。restoreappsettings.jsonにログ設定を追記します。}}Mainメソッドにログを利用する処理を追記します。・・・}BatchServiceクラスにログ出力処理を追記します。fooログ形式で出力されています。自分で作成したクラスをインジェクションするインジェクションするクラスを作成します。}}BatchServiceクラスでISampleRepositoryを受け取り利用する処理を追記します。}}Mainメソッドにインジェクションの設定をします。publish時にappsetings.jsonが付いていきません。publishに対応させます。csprojファイルにコピーの設定を追記します。</ItemGroup></Project>まとめ今まではWebアプリとバッチ処理系のConsoleアプリで作り方が異なりバッチ側があまりきれいに書けなかったのですがこれで基本的にほぼWebホスト同様の書き方ができるので色々と捗りそうです。サンプルを書いた程度なので実際に使ってみないとなんとも言えませんがこれからバッチプログラムはこの書き方で行こうかなっと思っています。弊社ではエンジニアを募集しています。C#以外にもいろいろなシステムが有りますのでご興味がある方は下記からエントリーをお願いします。Coreの設定変更を即時反映させるこんにちは、情報システム部の高野です。情報システム部の高野です。新卒採用スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。