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ファイルの追加のためのコードでお送りしました。