ASP.NET CoreのStartup.csへのインジェクション以外で、appsettings.XXX.jsonファイルにアクセスする。

appsettings.XXX.json(要するにconfigの類)をProgram.csで参照したい

普段ASP.NET Core MVCで開発している場合(ここでいう通常、は)、Startupクラスにはappsettings.jsonとappsettings.{EnvironmentName}.jsonを読み込んだコンフィグがインジェクション 設定関連の情報については通常、ServiceDescriptorのConfigureでDI設定をすることが多いと思います。

こんな感じ

services.Configure<KashilogdatabaseConfig>(configuration.GetSection(nameof(KashilogdatabaseConfig)));

が、例によって、Program.csの中でconfigの類を読みたい欲があります。

書いてみた(今回はローカルメソッド切って書いたので、抜粋)

            static IConfigurationRoot CreateDefaultConfigurationRoot(ConfigurationBuilder configurationBuilder) {
                return configurationBuilder
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json")
                    .AddJsonFile($"appsettings.{DefaultEnvironment.GetEnvironmentName()}.json")
                    .Build();
            }

DefaultEnvironment.GetEnvironmentName()は前回の記事で書いたので説明は省きます。 ConfigurationBuilderクラスに対して、[.SetBasePath]拡張メソッドと、[.AddJsonFile]拡張メソッドでappsettings.json / appsettings.{EnvironmentName}.jsonを追加して、Buildする簡単なお仕事です。 もちろんDefaultBuilderと違って、appsettings.jsonっていうファイル名じゃなくても大丈夫です。(DefaultBuilderでは、appsettings.json / appsettings.{EnvironmentName}.jsonを勝手に読むようになってます。) と言いつつ、appsettings.jsonと、各環境用のappsettings.{EnvironmentName}.jsonを読むことが多い気がするので、今回はこの2ファイルの追加のためのコードでお送りしました。