アプリケーション設定の管理 (.NET)
アプリケーション設定を使用すると、アプリケーション情報を動的に格納できます。 アプリケーション設定では、クライアント コンピューターを使用すると、実行時にアプリケーション コードに含めてはならない情報を格納できます。 アプリケーション設定には、接続文字列、ユーザー基本設定などを含めることができます。
注意
アプリケーション設定は、以前のバージョンの Visual Studio で使用されていた動的プロパティに代わる機能です。
アプリケーション設定には、それぞれ一意の名前を付ける必要があります。 名前には、文字、数字、またはアンダースコアの任意の組み合わせを指定できます。 名前は、番号で始めることはできず、スペースを含めることもできません。 名前は Name
プロパティで変更します。
アプリケーション設定は、XML にシリアル化される任意のデータ型として保存できます。あるいは、アプリケーション設定には、ToString
/FromString
を実装する TypeConverter
が与えられます。 最も一般的な型は、String
、Integer
、および 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.vb は Settings
クラスを定義し、これらのイベントを設定クラスで処理できるようにします。
Settings.vb の Settings
クラスは部分クラスであり、生成されたクラス全体ではなくユーザー所有コードだけが表示されます。 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)」をご覧ください。
.NET Framework から .NET へのアプリの移行
.NET Framework では、接続文字列やログ プロバイダー構成など、アプリの設定を読み込むために、app.config ファイルが使用されます。 最新の .NET では、アプリ設定に appsettings.json ファイルを使用します。 app.config ファイルを appsettings.json に変換する方法の詳細については、「.NET Framework から .NET へのアップグレード後に最新化する」を参照してください。