Visual Basic .NET または Visual Basic 2005 を使用して、アプリケーション構成ファイル内のカスタム情報を保存および取得する方法

この記事は、以前は次の ID で公開されていました: JP313405
Microsoft Microsoft Visual C# .NET については、次の資料を参照してください815786
概要
この資料では、構成 (.config) ファイルにカスタム情報を保存し、関連付けられたアプリケーションによって実行時に取得できるようにする方法を紹介します。これは、アプリケーションに関連付けられたデータを定義する場合に役立ちます。


必要条件

必要なハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および Service Pack は、次のとおりです。
  • Microsoft Windows 2000、Microsoft Windows XP、または Microsoft Windows Server 2003
  • Microsoft Visual Studio .NET (2002)、Microsoft Visual Studio .NET (2003)、または Microsoft Visual Studio 2005
この資料は、次のトピックについて詳しい知識のあるユーザーを対象としています。
  • XML (Extensible Markup Language)
  • .NET 構成ファイル

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

アプリケーションの設定を、アプリケーションに関連付けられた構成ファイルの中に保存することができます。構成ファイルは、XML 形式で保存されます。Microsoft .NET Framework の System.Configuration および System.Collections.Specialized 名前空間には、実行時に .NET アプリケーションの構成ファイルから情報を取得するのに必要なクラスが含まれています。

関連付けられた構成ファイルの内容を実行時に読み取るコンソール アプリケーションを作成するには、以下の手順を実行します。
  1. Visual Studio .NET または Visual Studio 2005 を起動します。
  2. Visual Basic .NET または Visual Basic 2005 で、ConConfig という名前の新しいコンソール アプリケーション プロジェクトを作成します。Visual Basic .NET または Visual Basic 2005 では、デフォルトで Module1 という名前のモジュールが作成されます。
  3. ConConfig プロジェクト フォルダを右クリックし、[追加] をポイントして、[新しい項目の追加] をクリックします。

    : Visual Studio 2005 では、ConConfig プロジェクト フォルダを右クリックし、[追加] をポイントし、[新しい項目] をクリックします。
  4. [新しい項目の追加] ダイアログ ボックスの [アプリケーション構成ファイル] テンプレートをクリックして [開く] をクリックし、App.config ファイルをプロジェクトに追加します。

    : Visual Studio .NET または Visual Studio 2005 の IDE では、App.Config は実行可能ファイルがコンパイルされるフォルダにコピーされ、<ApplicationName>.<Application Type>.config という形式の名前に変更されます。
  5. アプリケーション構成ファイルを使用して、キー/値の形式で保存したカスタムのアプリケーション設定を収集することができます。関連付けられている構成ファイルの <appSettings> セクションには、<add> 要素を追加できます。<add> 要素は、キー/値の各組に対して 1 つずつ存在し、次のような形式を取ります。
    <add key="theKey" value="theValue" />						
    <add> 要素を含む <appSettings> セクションを、構成ファイルの <configuration> タグと </configuration> タグの間に追加します。たとえば、以下の構成ファイルには、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>					
  6. ソリューション エクスプローラで、[Module1.vb] をダブルクリックして Module1 のコード ウィンドウを表示します。コード モジュールに以下のステートメントを追加します。

    : これらのステートメントは、ファイル内の他のステートメントよりも前の行で指定する必要があります。
    Imports System.ConfigurationImports System.Collections.Specialized					
  7. Sub Main プロシージャで、構成ファイルの <appSettings> セクション内の構成ファイル キーから取得された値を保持する文字列変数を宣言します。
    Dim sAttr As String					
  8. 構成ファイルの <appSettings> セクションから指定されたキーの値を取得するには、ConfigurationSettings クラスの AppSettings メソッドを使用します。ConfigurationSettings クラスは、System.Configuration 名前空間の中にあります。AppSettings メソッドが、キーを含む文字列型の入力パラメータを受け取ると、アプリケーションがそのキーに関連付けられた値を取得します。

    以下のコードでは、関連付けられた構成ファイルから Key0 属性の値を取得しています。取得した値は、文字列変数 sAttr に配置されます。この値に対するキーが存在しない場合は、sAttr に Nothing が格納されます。
    sAttr = ConfigurationSettings. AppSettings("Key0")					
  9. アプリケーションが取得する値をコンソール ウィンドウに表示するには、Console.WriteLine を使用します。
    Console.WriteLine("The value of Key0: " & sAttr)					
  10. AppSettings への 1 回の参照で、<appSettings> セクションのすべてのキー/値の組を取得することもできます。AppSettings プロパティを使用するときにパラメータを指定しなければ、関連付けられたキーと値の組がすべて返されます。これらの組は、NameValueCollection 型に格納されます。これには、アプリケーションが取得する各キーに対するキーと値のエントリが含まれています。NameValueCollection クラスは System.Collections.Specialized 名前空間にあります。
    Dim sAll As NameValueCollectionsAll = ConfigurationSettings.AppSettings()					
  11. NameValueCollection の AllKeys プロパティは、アプリケーションが取得する各キーに対するエントリを含む文字列配列を参照します。For Next 構造体を使用して AllKeys 配列に反復処理を行い、アプリケーションが取得する各キーにアクセスします。AllKeys 内の各キー エントリは、文字列型になっています。
    Dim s As StringFor Each s In sAll.AllKeys					
  12. For Each 構造体の内部では、Console.WriteLine を使用してキーとその値をコンソール ウィンドウに表示します。アプリケーションが処理している現在のキーは、"s" の中にあります。これを sAll NameValueCollection 内で添字として使用し、関連付けられている値を取得します。

    たとえば、アプリケーションが Key0 キーを処理している場合は、sAll("Key0") で、キーに関連付けられている値が取得されます。Console.Readline ステートメントは、コンソールを一時停止します。Enter キーを押すと、アプリケーションが終了します。
        Console.WriteLine("Key: " & s & " Value: " & sAll(s))NextConsole.Readline					

動作の検証

F5 キーを押してコードを実行します。コンソール ウィンドウには、関連付けられた構成ファイルの <appSettings> セクションから、以下のようなキーと値の組が表示されます。
The value of Key0: 0Key: Key0 Value:0Key: Key1 Value:1Key: Key2 Value:2					

完全なコード リスト

Imports System.ConfigurationImports System.Collections.SpecializedModule Module1    Sub Main()        Dim sAttr As String        sAttr = ConfigurationSettings.AppSettings("Key0")        Console.WriteLine("The value of Key0: " & sAttr)                Dim sAll As NameValueCollection        sAll = ConfigurationSettings.AppSettings()        Dim s As String        For Each s In sAll.AllKeys            Console.WriteLine("Key: " & s & " Value: " & sAll(s))        Next		  Console.ReadLine()    End SubEnd Module				

構成ファイルの内容 (ConConfig.exe.config)

<configuration>	<appSettings>		<add key="Key0" value="0"/>		<add key="Key1" value="1"/>		<add key="Key2" value="2"/>	</appSettings></configuration>				

トラブルシューティング

  • 構成ファイルは XML 形式で保存されるため、あらゆる XML 構文規則に例外なく従う必要があります。XML では、大文字と小文字が区別されます。XML の形式が正しくない場合や、要素のスペルが誤っている場合には、System.Configuration.Configuration 例外が発生します。

    たとえば、<add> 要素の key 属性を小文字の "k" ではなく大文字の "K" で追加している場合や、<appSettings> セクションが <AppSettings> (小文字の "a" ではなく大文字の "A" を使用) となっている場合には、エラー メッセージが表示されます。
  • 構成ファイルは、プロジェクトに含まれている必要があります。
  • Visual Studio 環境外で構成ファイルを作成する場合には、その名前に以下の構文を使用する必要があります。また、関連付けられているアプリケーションと同じフォルダに置く必要があります。
    ApplicationName.ApplicationType.config
    ApplicationName はアプリケーションの名前、ApplicationType はアプリケーションの種類 (exe など) です。.config は必須のサフィックスです。

関連情報
詳細については、次の MSDN Web サイトを参照してください。
プロパティ

文書番号:313405 - 最終更新日: 11/13/2006 04:10:48 - リビジョン: 5.1

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbvs2005swept kbvs2005applies kbconfig kbhowtomaster KB313405
フィードバック