Visual C# を使用してアプリケーション構成ファイルのカスタム情報を格納および取得する

この記事では、関連するアプリケーションによって実行時に後で取得できる構成ファイルからカスタム情報を格納する方法について説明します。 アプリケーションに関連付けられているデータを定義する必要がある場合に役立ちます。

元の製品バージョン: Visual C#
元の KB 番号: 815786

要件

次の一覧では、必要な推奨ハードウェアとソフトウェアの概要を示します。

  • Microsoft Windows
  • Visual C#

この記事では、次のトピックについて理解していることを前提としています。

  • 拡張マークアップ言語 (XML)
  • .NET 構成ファイル

構成ファイルを読み取るコンソール アプリケーションを作成する

アプリケーション設定は、アプリケーションに関連付けられている構成ファイルに格納できます。 構成ファイルは XML 形式で保存されます。

System.Configuration.NET Frameworkの 名前空間と System.Collections.Specialized 名前空間には、実行時に .NET アプリケーション構成ファイルから情報を取得するために必要なクラスが含まれています。

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

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

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

  3. [プロジェクトの種類] で [Visual C#] を選択し、[テンプレート] の [コンソール アプリケーション] を選択します。 プロジェクトに ConConfig という名前を 付けます。 既定では、Visual C# は Program という名前のクラスを作成します。

    注:

    Visual Studio .NET で、[プロジェクトの種類] で [Visual C# プロジェクト] を選択し、[テンプレート] の [コンソール アプリケーション] を選択します。 プロジェクトに ConConfig という名前を 付けます。 既定では、Visual C# は Class1 という名前のクラスを作成します。

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

  5. ソリューション エクスプローラーでプロジェクト名を右クリックし、[追加] を選択し、[新しい項目] を選択します。

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

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

  8. アプリケーション構成ファイルを使用して、キー/値形式で保存するカスタム アプリケーション設定を収集できます。 関連する構成ファイルのセクションに<appSettings>要素を含<add>めることができます。 各キーと値のペアには、1 つの <add> 要素があります。 要素の <add> 形式は次のとおりです。

    <add key="Key0" value="0" />
    

    要素を<appSettings>含む<add>セクションを、 と </configuration> タグの間の構成ファイルに<configuration>追加します。

    たとえば、次の構成ファイルには、 <appSettings> 3 つのキーと値のペアを指定するセクションが含まれています。

    <?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をダブルクリックしてコード ウィンドウを表示します。 コード モジュールに次のステートメントを追加します。

    注:

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

    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>取得するには、 クラスの プロパティの メソッドをAppSettingsConfigurationManager使用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. プロパティへの 1 つの参照を AppSettings 使用して、セクション内のすべてのキーと値のペアを <appSettings> 取得できます。 プロパティを AppSettings 使用すると、アプリケーションは関連付けられているすべてのキーと値のペアを返します。 これらのペアは型に NameValueCollection 格納されます。 には NameValueCollection 、アプリケーションが取得する各キーのキー/値エントリが含まれます。 クラスは NameValueCollection 名前空間にあります System.Collections.Specialized

    NameValueCollection sAll ;
    sAll = ConfigurationManager.AppSettings;
    
  15. 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();
        }
    }
}

注:

このコードは、.NET Framework 2.0 をターゲットにしています。 .NET Framework 1.0 または .NET Framework 1.1 を使用している場合は、 クラスのすべてのインスタンスを ConfigurationManagerConfigurationSettings変更します。

完全な構成ファイルの一覧 (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 発生します。

    たとえば、小文字の k ではなく大文字の K を持つ要素の<add>キー属性を追加した場合、またはセクションが として<AppSettings>表示される場合 (小文字の a ではなく大文字の A を含む) 場合<appSettings>は、エラー メッセージが表示されます。

  • 構成ファイルは、関連付けられているアプリケーションと同じフォルダーに保存する必要があります。

  • 構成ファイル名には、次の構文を使用する必要があります。
    <ApplicationName>。<ApplicationType>.config

    ApplicationName <> はアプリケーションの名前です。 <ApplicationType> は、 などの .exeアプリケーションの種類です。 と .config は、必要なサフィックスです。

関連情報