サーチ…
.NET 1.xのConfigurationSettingsからのAppSettings
廃止された使用法
ConfigurationSettingsクラスは、.NET 1.0および1.1のアセンブリの設定を取得する元の方法でした。これは、 ConfigurationManagerクラスとWebConfigurationManagerクラスによって置き換えられました。
設定ファイルのappSettings
セクションに同じ名前のキーが2つある場合は、最後のものが使用されます。
app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="keyName" value="anything, as a string"/>
<add key="keyNames" value="123"/>
<add key="keyNames" value="234"/>
</appSettings>
</configuration>
Program.cs
using System;
using System.Configuration;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
string keyValue = ConfigurationSettings.AppSettings["keyName"];
Debug.Assert("anything, as a string".Equals(keyValue));
string twoKeys = ConfigurationSettings.AppSettings["keyNames"];
Debug.Assert("234".Equals(twoKeys));
Console.ReadKey();
}
}
}
.NET 2.0以降でConfigurationManagerからAppSettingsを読み込む
ConfigurationManagerクラスはAppSettings
プロパティをサポートしてAppSettings
ます。これにより、.NET 1.xと同じ方法で設定ファイルのappSettings
セクションから設定を読み続けることができます。
app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="keyName" value="anything, as a string"/>
<add key="keyNames" value="123"/>
<add key="keyNames" value="234"/>
</appSettings>
</configuration>
Program.cs
using System;
using System.Configuration;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
string keyValue = ConfigurationManager.AppSettings["keyName"];
Debug.Assert("anything, as a string".Equals(keyValue));
var twoKeys = ConfigurationManager.AppSettings["keyNames"];
Debug.Assert("234".Equals(twoKeys));
Console.ReadKey();
}
}
}
Visual Studioの強力な型付けされたアプリケーションとユーザー設定のサポートの概要
Visual Studioでは、ユーザーとアプリケーションの設定を管理できます。この方法を使用すると、設定ファイルのappSettings
セクションを使用することに比べて、これらの利点が得られます。
設定を強く入力することができます。シリアル化できるタイプは、設定値として使用できます。
アプリケーションの設定は、ユーザー設定から簡単に切り離すことができます。 :アプリケーション設定は、単一の構成ファイルに保存されている
web.config
のWebサイトやWebアプリケーションのための、およびapp.configを、 組立 .exe.configと改称、 アセンブリが実行可能ファイルの名前です。ユーザー設定(Webプロジェクトでは使用されません)は、ユーザーのApplication Dataフォルダ(オペレーティングシステムのバージョンによって異なります)のuser.config
ファイルに格納されます。各クラスライブラリには独自のカスタム設定セクションがあるので、クラスライブラリのアプリケーション設定を名前の衝突の危険なしに単一の構成ファイルにまとめることができます。
ほとんどのプロジェクトタイプでは、 プロジェクトプロパティデザイナには、カスタムアプリケーションとユーザー設定を作成するための開始点である[設定 ]タブがあります。初期設定では、[設定]タブは空白になり、デフォルトの設定ファイルを作成するためのリンクが1つ表示されます。リンクをクリックすると、次の変更が行われます。
プロジェクト用の構成ファイル(
app.config
またはweb.config
)が存在しない場合は、そのファイルが作成されます。[設定]タブは、個々の設定エントリの作成、編集、および削除を可能にするグリッドコントロールに置き換えられます。
ソリューションエクスプローラで、プロパティの特別なフォルダの下に
Settings.settings
アイテムが追加されます。この項目を開くと、[設定]タブが開きます。新しい部分クラスを含む新しいファイルがプロジェクトフォルダの
Properties
フォルダに追加されます。この新しいファイルの名前はSettings.Designer.__
(.cs、.vbなど)で、クラスの名前はSettings
です。クラスはコード生成されているので編集する必要はありませんが、クラスは部分クラスであるため、追加のメンバーを別のファイルに入れてクラスを拡張できます。さらに、このクラスは、プロパティの名前でシングルトンインスタンスを露出させ、Singletonパターンを使用して実装されるDefault
。
新しい各エントリを[設定]タブに追加すると、Visual Studioは次の2つのことを行います。
Settingsクラスによって管理されるように設計されたカスタム構成セクションで、設定ファイルに設定を保存します。
Settingsクラスで新しいメンバーを作成し、[設定]タブで選択した特定のタイプの設定を読み書きして表示します。
厳密に型付けされた設定を設定ファイルのカスタムセクションから読み込む
新しいSettingsクラスとカスタム設定セクションから開始:
ExampleTimeoutという名前のアプリケーション設定をtime System.Timespanを使用して追加し、値を1分に設定します。
[設定]タブのエントリを保存し、カスタム設定クラスを再生成し、プロジェクト構成ファイルを更新するプロジェクトプロパティを保存します。
コード(C#)の設定を使用します。
Program.cs
using System;
using System.Diagnostics;
using ConsoleApplication1.Properties;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
TimeSpan exampleTimeout = Settings.Default.ExampleTimeout;
Debug.Assert(TimeSpan.FromMinutes(1).Equals(exampleTimeout));
Console.ReadKey();
}
}
}
カバーの下に
プロジェクト設定ファイルを見て、アプリケーション設定エントリがどのように作成されているかを確認します。
app.config (Visual Studioにより自動的に更新されます)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="ConsoleApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<appSettings />
<applicationSettings>
<ConsoleApplication1.Properties.Settings>
<setting name="ExampleTimeout" serializeAs="String">
<value>00:01:00</value>
</setting>
</ConsoleApplication1.Properties.Settings>
</applicationSettings>
</configuration>
appSettings
セクションは使用されないことに注意してください。 applicationSettings
セクションには、各エントリのsetting
要素を持つカスタム名前空間修飾セクションが含まれています。値のタイプは設定ファイルには格納されません。これはSettings
クラスのみがSettings
ます。
Settings
クラスを見て、このカスタムセクションを読むためにConfigurationManager
クラスをどのように使用するかを確認してください。
Settings.designer.cs (C#プロジェクトの場合)
...
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("00:01:00")]
public global::System.TimeSpan ExampleTimeout {
get {
return ((global::System.TimeSpan)(this["ExampleTimeout"]));
}
}
...
DefaultSettingValueAttribute
は、プロジェクトプロパティデザイナの[設定]タブに入力された値を格納するために作成されたことに注意してください。エントリが構成ファイルにない場合、代わりにこのデフォルト値が使用されます。