次の方法で共有


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.ConfigurationSystem.Collections.Specialized 名前空間には、実行時に .NET アプリケーション構成ファイルから情報を取得するために必要なクラスが含まれています。

実行時に関連付けられている構成ファイルの内容を読み取るコンソール アプリケーションを作成するには、次の手順に従います。

  1. Visual Studio .NET または Visual Studio を起動します。

  2. [ファイル] メニューの [新規作成]をポイントし、 [プロジェクト]をクリックします。

  3. プロジェクトの種類Visual C# を選択し、次に TemplatesConsole Application を選択します。 プロジェクトに ConConfig という名前を付けます。 既定では、Visual C# は Program という名前のクラスを作成します。

    Note

    Visual Studio .NET で、プロジェクトの種類Visual C# プロジェクトを選択し、Templates の下にある Console Application を選択します。 プロジェクトに ConConfig という名前を付けます。 既定では、Visual C# は Class1 という名前のクラスを作成します。

  4. ソリューション エクスプローラー ウィンドウが表示されていることを確認します。 表示されない場合は、Ctrl + Alt + L キーの組み合わせを押します。

  5. ソリューション エクスプローラーで、プロジェクト名を右クリックし、追加を選択し、新しいアイテム選択

  6. [新しい項目の追加] ボックスの一覧で、[XML ファイルを選択します。

  7. Name テキスト ボックスに「App.config」と入力し、[追加] を選択

  8. アプリケーション構成ファイルを使用して、キー/値形式で保存するカスタム アプリケーション設定を収集できます。 <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>
    
  9. ソリューション エクスプローラーで、Program.csをダブルクリックしてコード ウィンドウを表示します。 コード モジュールに次のステートメントを追加します。

    Note

    これらのステートメントは、ファイル内の他のステートメントの前に記述する必要があります。

    using System.Configuration;
    using System.Collections.Specialized;
    
  10. 次の手順に従って、 System.Configuration.dll への参照を追加します。

    1. [プロジェクト] メニューの [参照の追加] を選択します。
    2. [参照の追加] ダイアログ ボックスで、[.NET タブを選択します。
    3. System.Configurationのコンポーネント名を見つけて選択します。
    4. [OK] を選択します。
  11. 構成ファイルの <appSettings> セクションの構成ファイル キーの値を保持するには、次のように Main セクションで文字列変数を宣言します。

    string sAttr;
    
  12. 構成ファイルの <appSettings> セクションから指定したキーの値を取得するには、ConfigurationManager クラスのAppSettings プロパティのGet メソッドを使用します。 ConfigurationManager クラスは System.Configuration 名前空間にあります。 AppSettings.Get メソッドがキーを含む文字列入力パラメーターを受け取ると、アプリケーションはキーに関連付けられている値を取得します。

    次のコードは、関連付けられている構成ファイルから Key0 属性の値を取得します。 次に、この値を sAttr 文字列変数に配置します。 この値のキーが存在しない場合、 sAttrには何も格納されません。

    sAttr = ConfigurationManager.AppSettings.Get("Key0");
    
  13. アプリケーションが取得した値をコンソール ウィンドウに表示するには、次のように Console.WriteLine を使用します。

    Console.WriteLine("The value of Key0 is "+sAttr);
    
  14. AppSettings プロパティへの 1 つの参照を使用して、<appSettings> セクションのすべてのキーと値のペアを取得できます。 AppSettings プロパティを使用すると、アプリケーションは関連付けられているすべてのキーと値のペアを返します。 これらのペアは、 NameValueCollection 型に格納されます。 NameValueCollectionには、アプリケーションが取得する各キーのキー/値エントリが含まれます。 NameValueCollection クラスは System.Collections.Specialized 名前空間にあります。

    NameValueCollection sAll ;
    sAll = ConfigurationManager.AppSettings;
    
  15. NameValueCollectionAllKeys プロパティは、アプリケーションが取得する各キーのエントリを持つ文字列配列を参照します。 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は必須のサフィックスです。

関連情報