2008年2月2日土曜日

アプリケーション構成ファイル(C#)

前回の記事で、設定ファイルにはXMLが有効であると述べましたが、
単純に設定ファイルだけならアプリケーション構成ファイルの方が簡単で便利です。
(と、知り合いの人につっこまれました^^;)

アプリケーション構成ファイルは、文字通りアプリケーションの設定内容を
記述した、.Net Framework固有の設定ファイルです。

アプリケーションの設定をこのファイルに記述しておき、必要な時に読み取りにいく
処理を記述することで、容易に値を設定することが可能になります。

アプリケーション構成ファイルは、作成時には"App.config"という名前で
作成されますが、デバッグ / ビルドをした際にプロジェクト名に則した
ファイル名に変更されます。

実際に使いながら見ていきましょう。


まずは、"コンソール アプリケーション"プロジェクトを選び、
"AppConfigTest"と名前をつけます。

次に、メニューの"プロジェクト" > "新しい項目の追加"を選択します。

出てきた中から"アプリケーション構成ファイル"を選択します。
(名前を変更する必要はありません。)











作成されたばかりの"App.config"にはほとんど何も記述されていません。

このファイルがXMLファイルであること、文字エンコードが"utf-8"であること、
"configuration"という要素名のタグがあること、だけです。

ここに、以下のような記述をします。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Title" value="Localhost Web Pages" />
<add key="IPAddress" value="192.168.0.1" />
<add key="port" value="80" />
</appSettings>
</configuration>

注意しなければならないことは、"appSettings"の先頭が小文字であることです。

大文字にすると読み取れないので注意して下さい。

また、"<appSettings>"は読み取り専用であることも注意が必要です。

構成ファイルに追記をすることはあまりありませんが、
万が一そのような状況になった場合は別の方法を利用して下さい。
(個人的には別途XMLファイルを作成する方がいいと思います。)


次に、設定要素を読み出すプログラムを記述します。

そのまえに、実は"App.config"を解析するためのライブラリは、
デフォルトでは参照されていません。

よって、"プロジェクト" > "参照の追加"を選択し、".NET"の中から、
"System.Configuration"を選択します。














では、ソースを書いてみます。今回は非常に簡単です。

static void Main(string[] args)
{
Console.WriteLine(System.Configuration.ConfigurationManager.AppSettings["Title"]);
Console.WriteLine(System.Configuration.ConfigurationManager.AppSettings["IPAddress"]);
Console.WriteLine(System.Configuration.ConfigurationManager.AppSettings["port"]);
System.Threading.Thread.Sleep(5000);
}

これだけです。

本来は、"App.config"自体をもっと細かく記述することで、
読み出すプログラムも複雑になるのですが、それはまた別の機会にします。


実行してみます。















インデクサに"App.config"の"add"タグ内で指定した"key"を記述すれば、
"value"の値が返ってきます。


また、プロジェクトの "bin" > "Debug"(または"Release")フォルダを開くと、
"AppConfigTest.exe.config"というファイル名で保存されていることが
確認できます。
















参照:
アプリケーション構成ファイル : msdn
「アプリケーション構成ファイル」を使用して設定ファイルを読み込む : DOBON.Net