ConfigurationManager クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
クライアント アプリケーションの構成ファイルにアクセスできるようにします。 このクラスは継承できません。
public ref class ConfigurationManager abstract sealed
public static class ConfigurationManager
type ConfigurationManager = class
Public Class ConfigurationManager
- 継承
-
ConfigurationManager
例
最初の例は、アプリケーション設定を読み取り、新しい設定を追加し、既存の設定を更新する単純なコンソール アプリケーションを示しています。
using System;
using System.Configuration;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ReadAllSettings();
ReadSetting("Setting1");
ReadSetting("NotValid");
AddUpdateAppSettings("NewSetting", "May 7, 2014");
AddUpdateAppSettings("Setting1", "May 8, 2014");
ReadAllSettings();
}
static void ReadAllSettings()
{
try
{
var appSettings = ConfigurationManager.AppSettings;
if (appSettings.Count == 0)
{
Console.WriteLine("AppSettings is empty.");
}
else
{
foreach (var key in appSettings.AllKeys)
{
Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key]);
}
}
}
catch (ConfigurationErrorsException)
{
Console.WriteLine("Error reading app settings");
}
}
static void ReadSetting(string key)
{
try
{
var appSettings = ConfigurationManager.AppSettings;
string result = appSettings[key] ?? "Not Found";
Console.WriteLine(result);
}
catch (ConfigurationErrorsException)
{
Console.WriteLine("Error reading app settings");
}
}
static void AddUpdateAppSettings(string key, string value)
{
try
{
var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var settings = configFile.AppSettings.Settings;
if (settings[key] == null)
{
settings.Add(key, value);
}
else
{
settings[key].Value = value;
}
configFile.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
}
catch (ConfigurationErrorsException)
{
Console.WriteLine("Error writing app settings");
}
}
}
}
Imports System.Configuration
Module Module1
Sub Main()
ReadAllSettings()
ReadSetting("Setting1")
ReadSetting("NotValid")
AddUpdateAppSettings("NewSetting", "May 7, 2014")
AddUpdateAppSettings("Setting1", "May 8, 2014")
ReadAllSettings()
End Sub
Sub ReadAllSettings()
Try
Dim appSettings = ConfigurationManager.AppSettings
If appSettings.Count = 0 Then
Console.WriteLine("AppSettings is empty.")
Else
For Each key As String In appSettings.AllKeys
Console.WriteLine("Key: {0} Value: {1}", key, appSettings(key))
Next
End If
Catch e As ConfigurationErrorsException
Console.WriteLine("Error reading app settings")
End Try
End Sub
Sub ReadSetting(key As String)
Try
Dim appSettings = ConfigurationManager.AppSettings
Dim result As String = appSettings(key)
If IsNothing(result) Then
result = "Not found"
End If
Console.WriteLine(result)
Catch e As ConfigurationErrorsException
Console.WriteLine("Error reading app settings")
End Try
End Sub
Sub AddUpdateAppSettings(key As String, value As String)
Try
Dim configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
Dim settings = configFile.AppSettings.Settings
If IsNothing(settings(key)) Then
settings.Add(key, value)
Else
settings(key).Value = value
End If
configFile.Save(ConfigurationSaveMode.Modified)
ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name)
Catch e As ConfigurationErrorsException
Console.WriteLine("Error writing app settings")
End Try
End Sub
End Module
前の例では、次に示すように、プロジェクトに App.config ファイルがあることを前提としています。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="Setting1" value="May 5, 2014"/>
<add key="Setting2" value="May 6, 2014"/>
</appSettings>
</configuration>
次の例は、接続文字列を使用してデータベースからデータを読み取る方法を示しています。
using System;
using System.Configuration;
using System.Data.SqlClient;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ReadProducts();
}
static void ReadProducts()
{
var connectionString = ConfigurationManager.ConnectionStrings["WingtipToys"].ConnectionString;
string queryString = "SELECT Id, ProductName FROM dbo.Products;";
using (var connection = new SqlConnection(connectionString))
{
var command = new SqlCommand(queryString, connection);
connection.Open();
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
}
}
}
}
}
}
Imports System.Configuration
Imports System.Data.SqlClient
Module Module1
Sub Main()
ReadProducts()
End Sub
Sub ReadProducts()
Dim connectionString = ConfigurationManager.ConnectionStrings("WingtipToys").ConnectionString
Dim queryString = "SELECT Id, ProductName FROM dbo.Products;"
Using connection As New SqlConnection(connectionString)
Dim command = New SqlCommand(queryString, connection)
connection.Open()
Using reader As SqlDataReader = command.ExecuteReader()
While reader.Read()
Console.WriteLine(String.Format("{0}, {1}", reader(0), reader(1)))
End While
End Using
End Using
End Sub
End Module
前の例では、次に示すように、プロジェクトに App.config があることを前提としています。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
<add name="WingtipToys" connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=WingtipToys;Integrated Security=True;Pooling=False" />
</connectionStrings>
</configuration>
注釈
ConfigurationManagerクラスを使用すると、コンピューター、アプリケーション、およびユーザーの構成情報にアクセスできます。 このクラスは、非推奨の クラスを ConfigurationSettings 置き換えます。 Web アプリケーションの場合は、 クラスを使用します WebConfigurationManager 。
クラスを ConfigurationManager 使用するには、プロジェクトでアセンブリを参照する System.Configuration
必要があります。 既定では、コンソール アプリケーションなどの一部のプロジェクト テンプレートは、このアセンブリを参照しないため、手動で参照する必要があります。
注意
アプリケーション構成ファイルの名前と場所は、アプリケーションのホストによって異なります。 詳細については、「 構成ファイルを使用したアプリの構成」を参照してください。
組み込みの System.Configuration 型を使用するか、そこから派生して構成情報を処理できます。 これらの種類を使用すると、構成情報を直接操作でき、構成ファイルを拡張してカスタム情報を含めることができます。
クラスには ConfigurationManager 、次のタスクを実行できるメンバーが含まれています。
構成ファイルからセクションを読み取ります。 構成情報にアクセスするには、 メソッドを呼び出します GetSection 。 や などの
appSettings
一部のセクションでは、 クラスと ConnectionStrings クラスを使用しますAppSettings。connectionStrings
これらのメンバーは、読み取り専用操作を実行し、構成の単一のキャッシュされたインスタンスを使用し、マルチスレッド対応です。構成ファイル全体の読み取りと書き込み。 アプリケーションは、任意のレベルで構成設定を読み取りおよび書き込みできます。それ自体、または他のアプリケーションやコンピューターの場合は、ローカルまたはリモートで行うことができます。 クラスによって提供されるメソッドのいずれかを使用して、 ConfigurationManager SampleApp.exe.config などの構成ファイルを開きます。これらのメソッドは、関連する構成ファイルの操作に使用できるメソッドとプロパティを公開するオブジェクトを返 Configuration します。 メソッドは、読み取りまたは書き込み操作を実行し、ファイルが書き込まれるたびに構成データを作成します。
構成タスクをサポートします。 次の種類は、さまざまな構成タスクをサポートするために使用されます。
既存の構成情報を操作するだけでなく、 クラスなどの組み込みの構成の種類を拡張することで、カスタム構成要素をConfigurationElementConfigurationElementCollectionConfigurationProperty作成してConfigurationSection操作できます。 組み込みの構成の種類をプログラムで拡張する方法の例については、「」を参照してください ConfigurationSection。 属性ベースのモデルを使用する組み込み構成の種類を拡張する方法の例については、「」を参照してください ConfigurationElement。
注意 (継承者)
クラスを Configuration 使用すると、構成ファイルを編集するためのプログラムによるアクセスが可能になります。 によってConfigurationManager提供されるOpen
メソッドのいずれかを使用します。 これらのメソッドは オブジェクトを Configuration 返します。これにより、基になる構成ファイルを処理するために必要なメソッドとプロパティが提供されます。 これらのファイルにアクセスして、読み取りまたは書き込みを行うことができます。
構成ファイルを読み取る場合は、 または を使用 GetSection(String) します GetSectionGroup(String)。 読み取りを行うユーザーまたはプロセスには、次のアクセス許可が必要です。
現在の構成階層レベルの構成ファイルに対する読み取りアクセス許可。
すべての親構成ファイルに対する読み取りアクセス許可。
アプリケーションで独自の構成への読み取り専用アクセス権が必要な場合は、 メソッドを GetSection(String) 使用することをお勧めします。 このメソッドは、現在のアプリケーションのキャッシュされた構成値へのアクセスを提供します。これは、 クラスよりもパフォーマンスが Configuration 優れています。
構成ファイルに書き込むには、いずれかの方法を Save 使用します。 書き込むユーザーまたはプロセスには、次のアクセス許可が必要です。
現在の構成階層レベルの構成ファイルとディレクトリに対する書き込みアクセス許可。
すべての構成ファイルに対する読み取りアクセス許可。
プロパティ
AppSettings |
現在のアプリケーションの既定構成の AppSettingsSection データを取得します。 |
ConnectionStrings |
現在のアプリケーションの既定構成の ConnectionStringsSection データを取得します。 |
メソッド
GetSection(String) |
現在のアプリケーションの既定構成の、指定した構成セクションを取得します。 |
OpenExeConfiguration(ConfigurationUserLevel) |
現在のアプリケーションの構成ファイルを Configuration オブジェクトとして開きます。 |
OpenExeConfiguration(String) |
指定したクライアント構成ファイルを Configuration オブジェクトとして開きます。 |
OpenMachineConfiguration() |
現在のコンピューターのマシン構成ファイルを Configuration オブジェクトとして開きます。 |
OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel) |
指定したクライアント構成ファイルを、指定したファイル マップとユーザー レベルを使用する Configuration オブジェクトとして開きます。 |
OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean) |
指定したクライアント構成ファイルを、指定したファイル マップ、ユーザー レベル、およびプリロード オプションを使用する Configuration オブジェクトとして開きます。 |
OpenMappedMachineConfiguration(ConfigurationFileMap) |
マシン構成ファイルを、指定したファイル マップを使用する Configuration オブジェクトとして開きます。 |
RefreshSection(String) |
名前付きセクションを次回取得するときに、ディスクから再読み取りするように、名前付きセクションを更新します。 |
適用対象
こちらもご覧ください
.NET