アプリケーション設定の管理 (.NET)

アプリケーション設定を使用すると、アプリケーション情報を動的に格納できます。 アプリケーション設定では、クライアント コンピューターを使用すると、実行時にアプリケーション コードに含めてはならない情報を格納できます。 アプリケーション設定には、接続文字列、ユーザー基本設定などを含めることができます。

注意

アプリケーション設定は、以前のバージョンの Visual Studio で使用されていた動的プロパティに代わる機能です。

アプリケーション設定には、それぞれ一意の名前を付ける必要があります。 名前には、文字、数字、またはアンダースコアの任意の組み合わせを指定できます。 ただし、名前は、数値で始めることができず、スペースを含めることもできません。 名前は Name プロパティで変更します。

アプリケーション設定は、XML にシリアル化される任意のデータ型として保存できます。あるいは、アプリケーション設定には、ToString/FromString を実装する TypeConverter が与えられます。 最も一般的な型は、StringInteger、および Boolean です。 さらに値は、Color または Object として、あるいは接続文字列として保存することもできます。

アプリケーション設定には、値も保持されます。 値は、 プロパティで設定します。また、設定のデータ型と一致している必要があります。

さらに、デザイン時には、アプリケーション設定をフォームまたはコントロールのプロパティに関連付けることができます。

アプリケーション設定には、スコープによって次の 2 種類があります。

  • アプリケーション スコープ設定は、Web サービスの URL やデータベース接続文字列などの情報に使用できます。 これらの値は、アプリケーションに関連付けられます。 したがって、ユーザーがこれらを実行時に変更することはできません。

  • ユーザー スコープ設定は、終了時のフォームの位置やフォント設定などの情報の保持に使用できます。 ユーザーは実行時にこれらの値を変更できます。

設定の種類は、 スコープ プロパティを使用して変更できます。

プロジェクト システムは、2 つの XML ファイルにアプリケーションの設定を保存します。

  • app.config ファイルは、デザイン時に最初のアプリケーション設定を作成すると作成されます

  • user.config ファイルは、実行時に、アプリケーションを実行したユーザーがユーザー設定の値を変更すると作成されます。

アプリケーションによって該当するメソッドが特に呼び出されない限り、ユーザー設定の変更はディスクに書き込まれないことに注意してください。

デザイン時のアプリケーション設定の作成

設計時には、次の 2 つの方法でアプリケーション設定を作成できます。

  • プロジェクト デザイナー[設定] ページを使用します。

  • フォームまたはコントロール用の [プロパティ] ウィンドウを使用すると、設定をプロパティにバインドできます。

アプリケーション スコープ設定 (データベース接続文字列やサーバー リソースへの参照など) を作成した場合、Visual Studio は <applicationSettings> タグを使用して app.config ファイルに設定を保存します。 接続文字列は、 <connectionStrings> タグの下に保存されます。

ユーザー スコープ設定 (既定のフォント、ホーム ページ、ウィンドウ サイズなど) を作成した場合、Visual Studio は <userSettings> タグを使用して app.config ファイルに設定を保存します。

重要

接続文字列を app.config に保存するときは、パスワードやサーバー パスなどの機密情報が接続文字列に表示されないように注意する必要があります。

接続文字列情報を外部ソース (自分のユーザー ID やパスワードを指定したユーザーなど) から受け取った場合は、接続文字列の作成に使用する値に、接続の動作を変更してしまうような接続文字列パラメーターが含まれていないことを注意して確認する必要があります。

構成ファイル内の機密情報は、"保護された構成" 機能を使用して暗号化することを考慮してください。 詳細については、「接続情報の保護」を参照してください。

Note

クラス ライブラリには構成ファイル モデルが存在しないため、アプリケーション設定は、クラス ライブラリ プロジェクトでは使用できません。 ただし、Visual Studio Tools for Office Runtime DLL プロジェクトは例外で、構成ファイルを使用できます。

カスタマイズした設定ファイルの使用

カスタマイズした設定ファイルをプロジェクトに追加すると、設定をグループ化して管理できます。 1 つのファイルに含まれている設定は、1 つの単位として読み込まれ、保存されます。 頻繁に使用するグループの設定と頻繁に使用されないグループの設定を別々のファイルに格納することで、設定の読み込みと保存にかかる時間が短縮されます。

たとえば、SpecialSettings.settings ファイルを自分のプロジェクトに追加できます。 SpecialSettings クラスは My 名前空間に公開されませんが、 [コードの表示] によって Partial Class SpecialSettingsが格納されているカスタムの設定ファイルを読み込むことができます。

設定デザイナーでは、プロジェクト システムによって作成される Settings.settings ファイルがまず検索されます。 この Settings.settings ファイルは、プロジェクト デザイナーによって [設定] タブに表示される既定のファイルです。Settings.settings ファイルは、Visual Basic プロジェクトの場合は My Project フォルダーに置かれ、Visual C# プロジェクトの場合は Properties フォルダーにあります。 プロジェクト デザイナーは、その次にプロジェクトのルート フォルダーで他の設定ファイルを検索します。 したがって、カスタム設定ファイルはここに置いておく必要があります。 プロジェクト内の他の場所に .settings ファイルを追加しても、プロジェクト デザイナーはそのファイルを見つけることができません。

Visual Basic での実行時におけるアプリケーション設定へのアクセスまたは変更

Visual Basic プロジェクトでは、My.Settings オブジェクトを使うことで、実行時にアプリケーション設定にアクセスできます。 [設定] ページの [コードの表示] ボタンを選択して、Settings.vb ファイルを表示します。 Settings.vbSettings クラスを定義し、SettingChangingPropertyChangedSettingsLoadedSettingsSaving の各イベントを Settings クラスで処理できるようにします。 Settings.vbSettings クラスは部分クラスであり、生成されたクラス全体ではなくユーザー所有コードだけが表示されることに注意してください。 My.Settings オブジェクトを使ったアプリケーション設定へのアクセスについて詳しくは、「アプリケーション設定へのアクセス (.NET Framework)」をご覧ください。

ユーザーが実行時に変更するユーザー スコープ設定の値 (フォームの位置など) は、user.config ファイルに保存されます。 既定値は引き続き app.config に保存されていることに注意してください。

アプリケーションのテスト時など、実行時にユーザー スコープ設定を変更した後で、設定を既定値にリセットする場合は、[同期] ボタンを選択します。

My.Settings オブジェクトと既定の .settings ファイルを使用して設定にアクセスすることをお勧めします。 これを推奨する理由は、設定デザイナーを使用して、プロパティを設定に割り当てることができ、さらにアプリケーションのシャットダウン前にユーザー設定が自動的に保存されることにあります。 ただし、Visual Basic アプリケーションから設定に直接アクセスすることもできます。 その場合は、MySettings クラスにアクセスし、プロジェクトのルートにあるカスタムの .settings ファイルを使用する必要があります。 C# アプリケーションと同様、アプリケーションを終了する前にユーザー設定を保存する必要があります (次のセクションを参照してください)。

C# での実行時におけるアプリケーション設定へのアクセスまたは変更

次の Visual C# の例に示すように、C# などの Visual Basic 以外の言語では、Settings クラスに直接アクセスする必要があります。

Properties.Settings.Default.FirstUserSetting = "abc";

ユーザー設定を保持するためには、このラッパー クラスの Save メソッドを明示的に呼び出す必要があります。 これは、通常、メイン フォームの Closing イベント ハンドラーで行います。 次の C# の例では、Save メソッドの呼び出しを示します。

Properties.Settings.Default.Save();

Settings クラスを使ってアプリケーション設定にアクセスする方法の一般情報については、「アプリケーション設定の概要 (.NET Framework)」をご覧ください。 設定の反復処理については、この フォーラム ポストを参照してください。