アプリケーションの設定の管理
アプリケーション設定を使用することにより、アプリケーションのプロパティ設定やその他の情報を動的に格納し、取得できます。また、クライアント コンピューターでカスタム アプリケーションとユーザー設定を保守することもできます。アプリケーション設定は、多くの場合、アプリケーションの実行に必要なデータ (接続文字列など) ですが、アプリケーションのコードに直接含めるのは望ましくありません。たとえば、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 やパスワードなど) を外部ソースから受け取った場合は、接続文字列の作成に使用する値に、接続の動作を変更してしまうような接続文字列パラメーターが含まれていないことを注意して確認する必要があります。 構成ファイル内の機密情報は、"保護された構成" 機能を使用して暗号化することを考慮してください。詳細については、「Securing Connection Strings」を参照してください。 |
[!メモ]
クラス ライブラリには構成ファイル モデルが存在しないため、アプリケーション設定は、クラス ライブラリ プロジェクトでは使用できません。ただし、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 オブジェクトを使用したアプリケーション設定へのアクセスの詳細については、「アプリケーション設定へのアクセス (Visual Basic)」を参照してください。
ユーザーが実行時に変更するユーザー スコープ設定の値 (フォームの位置など) は、user.config ファイルに保存されます。既定値は引き続き app.config に保存されていることに注意してください。
アプリケーションのテストなど、実行時にユーザー スコープ設定を変更した後で設定を既定値にリセットする場合は、[同期] をクリックします。
設定へのアクセスには、My.Settings オブジェクトおよび既定の .settings ファイルを使用することを強くお勧めします。これは、設定デザイナーを使用して、プロパティを設定に割り当てることができ、さらにアプリケーションのシャットダウン前にユーザー設定が自動的に保存されるためです。ただし、Visual Basic アプリケーションから設定に直接アクセスすることもできます。その場合は、MySettings クラスにアクセスし、プロジェクトのルートにあるカスタムの .settings ファイルを使用する必要があります。また、C# アプリケーションと同様、アプリケーションを終了する前にユーザー設定を保存する必要があります。この方法については、次のセクションで説明します。
実行時におけるアプリケーション設定へのアクセスまたは変更 (Visual C#)
次の Visual C# の例に示すように、Visual C# などの Visual Basic 以外の言語では、Settings クラスに直接アクセスする必要があります。
Properties.Settings.Default.FirstUserSetting = "abc";
ユーザー設定を保持するためには、このラッパー クラスの Save メソッドを明示的に呼び出す必要があります。これは、通常、メイン フォームの Closing イベント ハンドラーで行います。次の Visual C# の例では、Save メソッドの呼び出しを示します。
Properties.Settings.Default.Save();
新しいアプリケーション設定の作成方法、およびフォームのプロパティへのそれらのバインド方法の具体例については、「方法 : デザイナーを使用してアプリケーション設定を作成する」を参照してください。Settings クラスを使用してアプリケーション設定にアクセスする方法の一般情報については、「アプリケーション設定の概要」を参照してください。