プログラミングを試してみたい人向けのC#プログラミングチュートリアル

設定ファイル(app.config)から値を取得

POINT
  • 設定を外出ししてファイルから取得する方法をご紹介
  • ConfigurationManagerを使うと簡単に設定値を取得できる
  • 設定ファイルはexe名.exe.configで用意する
目次

設定ファイルから値を取得するサンプル

C#ではConfigurationManagerというクラスを使用すると簡単に設定ファイルから値を取得できます。
ConfigurationManagerを使用する場合の設定ファイルはapp.configと呼ばれます。
実際のファイルは、ファイル名を「実行ファイル名(拡張子.exeを含む).config」にして用意します。

サンプルプログラムをご紹介します。
次のファイルを同じフォルダに作成してください。

ファイル名:Program.cs
public class Program
{
    public static void Main()
    {  
        // 設定ファイルからメッセージを取得
        string message = System.Configuration.ConfigurationManager.AppSettings["Message"];
        // メッセージを表示
        System.Console.WriteLine(message);
        // キー入力待ち
        System.Console.ReadKey();
    }
}
ファイル名:Program.exe.config
<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="Message" value="設定ファイルから取得したメッセージ"/>
  </appSettings>
</configuration>
ファイル名:Compile.bat
C:¥Windows¥Microsoft.NET¥Framework¥v4.0.30319¥csc.exe *.cs
pause
Program.exe 実行結果
設定ファイルから取得したメッセージ

ファイルを作成できたらCompile.batを実行してみましょう。
同じフォルダにProgram.exeが作成されます。
Program.exeを実行して「Program.exe 実行結果」のように表示されたら成功です。

設定ファイルの作り方

今回、実行ファイルは「Program.exe」となっています。
設定ファイルは実行ファイル名に「.config」を付けて用意します。
今回の場合の設定ファイル名は「Program.exe.config」になります。
ファイルは実行ファイルと同じフォルダに用意します。
「Program.exe.config」の内容を再度紹介します。

ファイル名:Program.exe.config
<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="Message" value="設定ファイルから取得したメッセージ"/>
  </appSettings>
</configuration>

ファイルは<?xml version="1.0"?>から始めます。
<configuration>タグの中に<appSettings>タグを記載、その中の<add>タグに設定を記載します。
値を取得する際は<add>タグのkey属性を指定してvalue属性の値を取得します。
<add>タグは次のように複数記載することができます。

ファイル名:Program.exe.config
<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="Message" value="設定ファイルから取得したメッセージ"/>
    <add key="Setting2" value="設定2"/>
  </appSettings>
</configuration>

設定ファイルを値を取得する方法

設定ファイルからの値取得は、System.Configuration.ConfigurationManager.AppSettings["key属性の値"]で取得できます。
クラスの生成も設定ファイル名の指定も不要です。

ファイル名:Program.cs(抜粋)
        // 設定ファイルからメッセージを取得
        string message = System.Configuration.ConfigurationManager.AppSettings["Message"];

クラスの生成も設定ファイル名の指定も不要です。
string型での取得になるため、数値などの値は文字列から変換する必要があります。