コンソールアプリで設定ファイルを使う方法【C#, json, config】

.Netのコンソールアプリで設定ファイルを利用したい人の向けに記事になります。

コンソールアプリでは、予め設定ファイルというものが用意されていません。
設定ファイルを利用するためには自分でファイルを用意し、
読み取るための仕組みを自分のアプリに入れる必要があります。

今回は、App.configから読み取る方法とappsettings.jsonを利用する二つの方法を紹介します。

早速みていきましょう。

.configファイルを読み込めるようにする方法

.net frameworkから存在する.configを利用した設定値のファイル読み込みです。
今回はApp.configという名前で設定値を読み取ります。

  • App.configの用意
  • プロジェクト参照の追加(Nuget)
  • App.configの読み込みコードとファイル参照

App.configの用意

プロジェクト直下に「App.config」というファイルを用意し次のように記述します。


<add key=”○○” value=”××” />を増やすことで読み込む設定値を増やすことができます。

プロジェクト参照の追加(Nuget)

「System.Configuration.ConfigurationManager」をNuGet経由で インストールしましょう。
NuGetの使い方がわからない方はこちらの記事を参照ください。

App.configの読み込みコードとファイル参照

NugetでインストールしたConfigurationManagerを用いてSetting1を読み込んでみましょう。


これでApp.configの読み込みは以上です。

appsettings.jsonを読み込めるようにする方法

次にjsonファイルを利用した設定値の利用方法の紹介です。
今回は「appsettings.json」を読み込んでみます。

appsettings.jsonの用意

ファイル作成

appsettings.jsonをプロジェクト直下に作成し、次のように記述します。


後述しますが、オブジェクトにマッピングするためにMyConfigという名前のデータを用意します。

「出力ディレクトリに常にコピーする」設定追加

作成したappsettings.jsonのプロパティを開き、「出力ディレクトリにコピー」の項目を「常にコピーする」に変更します。

この設定をしておかないと、ビルドした時にappsettings.jsonファイルが抜け落ち、
設定値が読み取れなくなってしまいます。

プロジェクト参照の追加(Nuget)

  • Microsoft.Extensions.Configuration.Json
  • Microsoft.Extensions.Hosting
  • Microsoft.Extensions.Options
  • Microsoft.Extensions.Options.DataAnnotations

をNuGetでインストールします。

読み込みコード

App.configとは異なり、オブジェクトへのマッピングまで行います。
先程、jsonに記載した、「MyConfig」をコード上でも記述します。


なお、今回は仮にappsettings.jsonとしていますが、
「appsettings」は自分好みに変えられます。
これはApp.confgとは違うところです。

どちらを使うか

所属チームや組織にこだわりやルールがあればそちらに従い、
無ければ、使いやすいほうを使用すれば良いと思います。
個人的なおすすめは、オブジェクトへのマップまでがスムーズゆえ、jsonにはなります。
しかし、結局は使用者やチームの使いやすさが一番ですね。