アプリケーション設定
更新 : 2007 年 11 月
アプリケーション設定を使用することにより、アプリケーションのプロパティ設定やその他の情報を動的に格納し、取得できます。また、クライアント コンピュータでカスタム アプリケーションとユーザー設定を保守することもできます。アプリケーション設定は、多くの場合、アプリケーションの実行に必要なデータ (接続文字列など) ですが、アプリケーションのコードに直接含めるのは望ましくありません。たとえば、2 種類のデータベース接続文字列を保存し、実行時にコンピュータの位置に基づいて、2 種類のうちのいずれかを取得したり、ユーザーの色設定を保存して、アプリケーションの次回実行時に取得したりできります。
アプリケーション設定は、Visual Studio の前のバージョンの動的プロパティ機能に代わる機能です。動的プロパティについては、「動的プロパティによるアプリケーションの設定」を参照してください。
アプリケーション設定には、それぞれ一意の名前を付ける必要があります。名前には、文字、数字、アンダースコアを自由に組み合わせて使用できますが、先頭には数字を使用できず、また、空白は使用できません。名前は Name プロパティで変更できます。
アプリケーション設定は、XML シリアル化可能な任意のデータ型、または ToString/FromString を実装する TypeConverter を持つ任意のデータ型として保存できます。一般的な型は、String、Integer、および Boolean ですが、Color、Object、または接続文字列として値を保存することもできます。
アプリケーション設定には、値も含まれます。値は、値プロパティで設定します。また、設定のデータ型と一致している必要があります。
さらに、デザイン時には、アプリケーション設定をフォームまたはコントロールのプロパティに関連付けることができます。詳細については、「方法 : アプリケーション設定を追加または削除する」を参照してください。
アプリケーション設定には、スコープによって次の 2 種類があります。
アプリケーション スコープ設定は、Web サービスの URL やデータベース接続文字列などの情報に使用できます。これらの値は、アプリケーションに関連付けられます。したがって、ユーザーがこれらを実行時に変更することはできません。
ユーザー スコープ設定は、終了時のフォームの位置やフォント設定などの情報の保持に使用できます。ユーザーは実行時に値を変更できます。
設定の種類は、スコープ プロパティを使用して変更できます。
プロジェクト システムは、アプリケーション設定を 2 つの XML ファイルに保存します。1 つは、デザイン時に最初のアプリケーション設定を作成したときに作成される app.config ファイルで、もう 1 つは、アプリケーションを実行するユーザーが実行時にユーザー設定の値を変更したときに作成される user.config ファイルです。アプリケーションが明示的にメソッドを呼び出さない限り、ユーザー設定の変更はディスクに書き込まれないことに注意してください。
デザイン時におけるアプリケーション設定の作成
デザイン時にアプリケーションの設定を作成するには、プロジェクト デザイナの [設定] ページを使用するか、フォームやコントロールの [プロパティ] ウィンドウを使用します。後者では、プロパティに設定を直接関連付けることができます。詳細については、「方法 : アプリケーション設定を追加または削除する」を参照してください。
アプリケーション スコープ設定 (データベース接続文字列やサーバー リソースへの参照など) を作成した場合、Visual Studio は、<applicationSettings> タグを使用して app.config に設定を保存します。接続文字列は、<connectionStrings> タグの下に保存されます。
ユーザー スコープ設定 (既定のフォント、ホーム ページ、ウィンドウ サイズなど) を作成した場合、Visual Studio は、<userSettings> タグを使用して app.config に設定を保存します。
セキュリティに関するメモ : |
---|
接続文字列を app.config に保存するときは、パスワードやサーバー パスなどの機密情報が接続文字列に表示されないように注意する必要があります。 接続文字列情報 (ユーザーが入力するユーザー ID やパスワードなど) を外部ソースから受け取った場合は、接続文字列の作成に使用する値に、接続の動作を変更してしまうような接続文字列パラメータが含まれていないことを注意して確認する必要があります。 構成ファイル内の機密情報は、"保護された構成" 機能を使用して暗号化することを考慮してください。詳細については、「接続情報の保護 (ADO.NET)」を参照してください。 |
メモ : |
---|
クラス ライブラリには構成ファイル モデルが存在しないため、アプリケーション設定は、クラス ライブラリ プロジェクトでは使用できません。ただし、Visual Studio Tools for Office DLL プロジェクトは例外で、構成ファイルを使用できます。 |
カスタマイズした設定ファイルの使用
カスタマイズした設定ファイルをプロジェクトに追加すると、設定をグループ化して管理できます。1 つのファイルに含まれている設定は、1 つの単位として読み込まれ、保存されます。したがって、頻繁に使用するグループと頻繁に使用されないグループとでは、設定を別々のファイルに格納できると、設定の読み込みと保存にかかる時間が短縮されます。
たとえば、SpecialSettings.settings という名前のファイルをプロジェクトに追加できます。SpecialSettings クラスは My 名前空間に公開されませんが、[コードの表示] では、Partial Class SpecialSettings が格納されているカスタムの設定ファイルを読み込むことができます。
設定デザイナでは、プロジェクト システムによって作成される Settings.settings ファイルがまず検索されます。これは、プロジェクト デザイナによって [設定] タブに表示される既定のファイルです。Settings.settings は Visual Basic プロジェクトでは My Project フォルダに、Visual C# プロジェクトでは Properties フォルダにあります。プロジェクト デザイナは、その次にプロジェクトのルート フォルダで他の設定ファイルを検索します。したがって、カスタム設定ファイルはここに置いておく必要があります。プロジェクト内の他の場所に .settings ファイルを追加しても、プロジェクト デザイナはそのファイルを見つけることができません。
実行時におけるアプリケーション設定へのアクセスまたは変更 (Visual Basic)
Visual Basic プロジェクトでは、My.Settings オブジェクトを使用することで、実行時にアプリケーション設定にアクセスできます。[設定] ページの [コードの表示] ボタンをクリックして、Settings.vb ファイルを表示します。詳細については、「方法 : 設定イベントにアクセスする」を参照してください。Settings.vb は Settings クラスを定義し、SettingChanging、PropertyChanged、SettingsLoaded、SettingsSaving の各イベントを Settings クラスで処理できるようにします。Settings.vb の Settings クラスは部分クラスであり、生成されたクラス全体ではなくユーザー所有コードだけが表示されることに注意してください。My.Settings オブジェクトを使用したアプリケーション設定へのアクセスの詳細については、「アプリケーション設定へのアクセス」を参照してください。
ユーザーが実行時に変更するユーザー スコープ設定の値 (フォームの位置など) は、user.config ファイルに保存されます。既定値は引き続き app.config に保存されていることに注意してください。
アプリケーションのテストなど、実行時にユーザー スコープ設定を変更した後で設定を既定値にリセットする場合は、[同期] をクリックします。このコントロールについては、「[設定] ページ (プロジェクト デザイナ)」を参照してください。
設定へのアクセスには、My.Settings オブジェクトおよび既定の .settings ファイルを使用することを強くお勧めします。これは、設定デザイナを使用して、プロパティを設定に割り当てることができ、さらにアプリケーションのシャットダウン前にユーザー設定が自動的に保存されるためです。ただし、Visual Basic アプリケーションから設定に直接アクセスすることもできます。その場合は、MySettings クラスにアクセスし、プロジェクトのルートにあるカスタムの .settings ファイルを使用する必要があります。また、C# アプリケーションと同様、アプリケーションを終了する前にユーザー設定を保存する必要があります。この方法については、次のセクションで説明します。
実行時におけるアプリケーション設定へのアクセスまたは変更 (Visual C#)
Visual C# などの Visual Basic 以外の言語では、Settings クラスに直接アクセスする必要があります。
ユーザー設定を保持するためには、このラッパー クラスの Save メソッドを明示的に呼び出す必要があります。これは、通常、メイン フォームの Closing イベント ハンドラで行います。新しいアプリケーション設定の作成方法、およびフォームのプロパティへのそれらのバインド方法の具体例については、「方法 : デザイナを使用してアプリケーション設定を作成する」を参照してください。Settings クラスを使用してアプリケーション設定にアクセスする方法の一般情報については、「アプリケーション設定の概要」を参照してください。