App.config ファイルの概要
アプリケーション設定ファイルは標準的な XML ファイルであり、タグや属性は大文字・小文字を区別します。このファイルはアプリケーションを再コンパイルせずに設定を変更できるため、柔軟性のある設計が可能です。ルート要素は <configuration> であり、その中にあらゆる設定セクションが含まれます。
よく使われる設定構造の例:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="connectionstring" value="User Source=.;Password=123456;Initial Catalog=test;Provider=SQLOLEDB.1;" />
<add key="TemplatePATH" value="Template" />
</appSettings>
</configuration>
.NET Framework 2.0 以降では、System.Configuration.ConfigurationManager を使用して設定を読み取るのが一般的です。ただし、このプロパティは読み取り専用であり、直接書き込みはできません。
App.config の読み書き方法
App.config の <appSettings> に含まれる値は次のようにして読み取ることができます:
string value = ConfigurationManager.AppSettings["connectionstring"];
値を変更するには、Configuration オブジェクトを使用してファイルを開き、変更後に保存する必要があります。
設定の追加・更新・削除
using System.Configuration;
public void UpdateAppSettings()
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// 値の取得
string currentPath = config.AppSettings.Settings["TemplatePATH"]?.Value;
// 値の更新
config.AppSettings.Settings["TemplatePATH"].Value = "NewTemplate";
// 新しいキーの追加
config.AppSettings.Settings.Add("NewKey", "NewValue");
// 不要なキーの削除
config.AppSettings.Settings.Remove("connectionstring");
// 変更を保存
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
注意点
- 存在しないキーにアクセスしても例外は発生しません。戻り値は
nullになります。 - すでに存在するキーを追加すると、値がカンマで連結されます。
- コンパイル後、実行ディレクトリに
AppName.exe.configという名前で設定ファイルが生成されます。 - XML は大文字・小文字を区別するため、キー名やセクション名に注意してください。
カスタム設定の保存
アプリケーションでユーザー設定を保存したい場合、Visual Studio の Settings.settings ファイルを使用するのが便利です。
設定ファイルの作成
- プロジェクト → [追加] → [新しい項目] を選択
- [設定ファイル] を選択し、任意の名前を付けて作成
保存と読み込みのコード例
// 設定の読み込み
string myConfig = Properties.Settings.Default.testconfig;
// 設定の更新
Properties.Settings.Default.testconfig = "Updated Value";
Properties.Settings.Default.Save();
保存場所
通常、設定は次のパスに保存されます:
C:\Users\<ユーザー名>\AppData\Local\<会社名>\<アプリ名>_<ハッシュ>\<バージョン>
シリアルポート設定の保存例
例えば、シリアル通信の設定(COMポート番号やボーレートなど)を保存する場合、次のように設定ファイルに項目を追加します:
Properties.Settings.Default.ComPort = "COM3";
Properties.Settings.Default.BaudRate = 9600;
Properties.Settings.Default.Save();