C#のApp.Configによる読み書きとバージョンアップ

本記事は、[C#での設定ファイル管理とパラメータのバージョンアップ]の続きとして、アプリケーション構成ファイル(app.config)による設定情報やパラメータの扱いについて記載します。Visual Studioを使って開発する際(必ずしも、VSでなくても可能ですが)、構成ファイルを使う方法がいくつかありますが、本記載ではapp.configについて記載します。

App.configを使うための準備

app.configのファイルフォーマット

app.configもINIファイルのようなkeyとvalueを記述するになります。

Visual Studioでの設定

以下の図のようにプロジェクトの参照にSystem.Configuraitonを追加します。

app.configからの読み込みと書き込み

・ConfigurationManager.AppSettings[“key”]を使い、呼び出すことができます。keyとはapp.configファイルのkey部分に値する文字列です。

Getxx関数を分けていますが、もっと使いたい場合は、Genericを使い文字列を欲しい方へ変換する関数を用意すると良いでしょう。

app.configによる読み書きの注意点と対策

上記の[src1.2]は、exeが存在するフォルダに、{EXE名}.exe.Configとして保存されます。1つのPCに一つのバージョンしかインストールできないアプリケーションの場合は影響が少ないですが、一つのPCに複数バージョンをインストール可能にし、ユーザが欲しいバージョンを起動するようにしたい場合は、バージョン毎にconfigファイルが存在し、新しいバージョンを入れた場合に、どのフォルダのconfigから読みだすべきか分からなくなります。そこで、以下のようにconfigファイルのパスを指定すると良いです。

このサンプルは、指定したファイルパスにconfigファイルを保存し、読み込むことができるので、以下の使い方ができます。

  • 同じアプリケーションを複数バージョンインストールする必要がある場合、設定ファイルパスを固定にする。
  • アプリケーション内で複数の設定ファイルを持ち、それぞれ読み書きしたい。

パラメータバージョンアップにおけるApp.Config管理による影響

バージョンアップのないアプリケーションは基本ありえないので、バージョンアップを考慮し、注意点と対策欄で記述とおり、ファイル名を指定して実装すると良いです。また、この方法は、INIファイルやレジストリを扱う方法と同じく、クラス情報をそのままレジストリに保存することはなく、一度、変換を行うことになる。そのため、INIファイルによる設定ファイルの管理と同じく、パラメータバージョンアップの際も、基本は影響を受けません。なので、クラスのメンバー毎に読み込みと書き込みの変換の実装が必要ですが、その分、バージョンアップによってパラメータが増えても素直に実装できるメリットがあるのが特徴です。

まとめ

app.configによるパラメータ管理は、ファイル名を指定できるようにします。app.configとGUIなどの画面用のデータクラスに対し、パラメータ変換が必要になるので、大規模プロジェクトでは本当に必要な一部分(アプリケーションのサイズ、位置情報とか)に対して使うと良いでしょう。