Visual C# を使用してアプリケーション構成ファイルのカスタム情報を格納および取得する
この記事では、関連付けられているアプリケーションによって実行時に後で取得できる構成ファイルからカスタム情報を格納する方法について説明します。 これは、アプリケーションに関連付けられているデータを定義する必要がある場合に役立ちます。
Note
この記事のコードは、.NET Framework 2.0 以降のバージョンを対象としています。 ConfigurationManager
クラスが適用される特定のバージョンについては、「Applies to」セクションを参照してください。
元の製品バージョン: Visual C#
元の KB 番号: 815786
要件
次の一覧では、必要な推奨ハードウェアとソフトウェアの概要を示します。
- Microsoft Windows
- Visual C#
この記事では、次のトピックについて理解していることを前提としています。
- XML (Extensible Markup Language)
- .NET 構成ファイル
構成ファイルを読み取るコンソール アプリケーションを作成する
アプリケーション設定は、アプリケーションに関連付けられている構成ファイルに格納できます。 構成ファイルは XML 形式で保存されます。
.NET Framework の System.Configuration
と System.Collections.Specialized
名前空間には、実行時に .NET アプリケーション構成ファイルから情報を取得するために必要なクラスが含まれています。
実行時に関連付けられている構成ファイルの内容を読み取るコンソール アプリケーションを作成するには、次の手順に従います。
Visual Studio .NET または Visual Studio を起動します。
[ファイル] メニューの [新規作成]をポイントし、 [プロジェクト]をクリックします。
プロジェクトの種類で Visual C# を選択し、次に Templates で Console Application を選択します。 プロジェクトに ConConfig という名前を付けます。 既定では、Visual C# は Program という名前のクラスを作成します。
Note
Visual Studio .NET で、プロジェクトの種類で Visual C# プロジェクトを選択し、Templates の下にある Console Application を選択します。 プロジェクトに ConConfig という名前を付けます。 既定では、Visual C# は Class1 という名前のクラスを作成します。
ソリューション エクスプローラー ウィンドウが表示されていることを確認します。 表示されない場合は、Ctrl + Alt + L キーの組み合わせを押します。
ソリューション エクスプローラーで、プロジェクト名を右クリックし、追加を選択し、新しいアイテム選択。
[新しい項目の追加] ボックスの一覧で、[
XML ファイル を選択します。Name テキスト ボックスに「App.config」と入力し、[追加] を選択。
アプリケーション構成ファイルを使用して、キー/値形式で保存するカスタム アプリケーション設定を収集できます。
<add>
要素は、関連付けられている構成ファイルの<appSettings>
セクションに含めることができます。 各キーと値のペアには、1 つの<add>
要素があります。<add>
要素の形式は次のとおりです。<add key="Key0" value="0" />
<configuration>
タグと</configuration>
タグの間の構成ファイルに、<add>
要素を含む<appSettings>
セクションを追加します。たとえば、次の構成ファイルには、3 つのキーと値のペアを指定する
<appSettings>
セクションが含まれています。<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="Key0" value="0" /> <add key="Key1" value="1" /> <add key="Key2" value="2" /> </appSettings> </configuration>
ソリューション エクスプローラーで、Program.csをダブルクリックしてコード ウィンドウを表示します。 コード モジュールに次のステートメントを追加します。
Note
これらのステートメントは、ファイル内の他のステートメントの前に記述する必要があります。
using System.Configuration; using System.Collections.Specialized;
次の手順に従って、 System.Configuration.dll への参照を追加します。
- [プロジェクト] メニューの [参照の追加] を選択します。
- [参照の追加] ダイアログ ボックスで、[.NET タブを選択します。
System.Configuration
のコンポーネント名を見つけて選択します。- [OK] を選択します。
構成ファイルの
<appSettings>
セクションの構成ファイル キーの値を保持するには、次のようにMain
セクションで文字列変数を宣言します。string sAttr;
構成ファイルの
<appSettings>
セクションから指定したキーの値を取得するには、ConfigurationManager クラスのAppSettings
プロパティのGet
メソッドを使用します。ConfigurationManager
クラスはSystem.Configuration
名前空間にあります。AppSettings.Get
メソッドがキーを含む文字列入力パラメーターを受け取ると、アプリケーションはキーに関連付けられている値を取得します。次のコードは、関連付けられている構成ファイルから
Key0
属性の値を取得します。 次に、この値をsAttr
文字列変数に配置します。 この値のキーが存在しない場合、sAttr
には何も格納されません。sAttr = ConfigurationManager.AppSettings.Get("Key0");
アプリケーションが取得した値をコンソール ウィンドウに表示するには、次のように
Console.WriteLine
を使用します。Console.WriteLine("The value of Key0 is "+sAttr);
AppSettings
プロパティへの 1 つの参照を使用して、<appSettings>
セクションのすべてのキーと値のペアを取得できます。AppSettings
プロパティを使用すると、アプリケーションは関連付けられているすべてのキーと値のペアを返します。 これらのペアは、NameValueCollection
型に格納されます。NameValueCollection
には、アプリケーションが取得する各キーのキー/値エントリが含まれます。NameValueCollection
クラスはSystem.Collections.Specialized
名前空間にあります。NameValueCollection sAll ; sAll = ConfigurationManager.AppSettings;
NameValueCollection
のAllKeys
プロパティは、アプリケーションが取得する各キーのエントリを持つ文字列配列を参照します。 foreach 構築を使用してAllKeys
配列を反復処理し、アプリケーションが取得する各キーにアクセスします。AllKeys
の各キー エントリは文字列データ型です。foreach
構造内で、Console.WriteLine
を使用して、キーとそれに関連付けられている値をコンソール ウィンドウに表示します。 アプリケーションが処理する現在のキーがs
。 関連付けられた値を取得するには、sAllNameValueCollection
のインデックスとして使用します。foreach (string s in sAll.AllKeys) Console.WriteLine("Key: "+ s + " Value: " + sAll.Get(s)); Console.ReadLine();
完全なコード リスト
using System;
using System.Configuration;
using System.Collections.Specialized;
namespace ConConfig
{
class Program
{
static void Main(string[] args)
{
string sAttr;
// Read a particular key from the config file
sAttr = ConfigurationManager.AppSettings.Get("Key0");
Console.WriteLine("The value of Key0: " + sAttr);
// Read all the keys from the config file
NameValueCollection sAll;
sAll = ConfigurationManager.AppSettings;
foreach (string s in sAll.AllKeys)
Console.WriteLine("Key: " + s + " Value: " + sAll.Get(s));
Console.ReadLine();
}
}
}
完全な構成ファイルの一覧 (ConConfig.exe.config)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Key0" value="0" />
<add key="Key1" value="1" />
<add key="Key2" value="2" />
</appSettings>
</configuration>
動作することを確認する
F5 キーを押してコードを実行します。 コンソール ウィンドウには、関連付けられている構成ファイルの <appSettings>
セクションのキーと値のペアが次のように表示されます。
The value of Key0: 0
Key: Key0 Value:0
Key: Key1 Value:1
Key: Key2 Value:2
トラブルシューティング
構成ファイルは XML 形式で保存されます。 すべての XML 構文規則に従っていることを確認します。 XML では大文字と小文字が区別されます。 XML が整形式でない場合、または要素のスペルが間違っている場合は、
System.Configuration.Configuration
例外が発生します。たとえば、
<add>
要素のキー属性を小文字の k ではなく大文字の K で追加した場合、または<appSettings>
セクションが<AppSettings>
(小文字 a ではなく大文字 A) として表示される場合は、エラー メッセージが表示されます。構成ファイルは、関連付けられているアプリケーションと同じフォルダーに保存する必要があります。
構成ファイル名には、次の構文を使用する必要があります。
<ApplicationName>.<ApplicationType>.configここで、 <ApplicationName> はアプリケーションの名前です。 <ApplicationType> は、
.exe
などのアプリケーションの種類です。.config
は必須のサフィックスです。