アプリを作成している際、通常は既定の構成ファイル (app.config)でいいのですが
たまに別のファイルを構成ファイルとして読み込む必要があったりします。
それに関してのメモです。
別のファイルを構成ファイルとして読み込む際は
System.Configuration.ConfigurationManager.OpenMappedExeConfiguration
メソッドを利用します。OpenExeConfigurationメソッドだと既定の構成ファイルが
読み込まれますので注意してください。
OpenMappedExeConfigurationメソッドは、引数に
System.Configuration.ExeConfigurationFileMap
オブジェクトを与える必要があります。
このクラスのExeConfigFilenameプロパティにファイル名を指定します。
ConfigurationUserLevelは通常Noneで問題ありません。ローミングなどが
絡む場合は別途適切な値を指定します。
System.Configuration名前空間を利用する場合、先に参照設定で
「System.Configuration.dll」を設定しておく必要があります。
以下、サンプルです。
Hoge.Configという名前で構成ファイルを用意します。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <clear /> <add name="HogeConnectionString" connectionString="Server=.\SQLEXPRESS;Integrated Security=True;Database=XXXX;Persist Security Info=False" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration>
以下、それを読み取るサンプルです。
using System; using System.Configuration; namespace ReadAnotherConfigFile { class Program { static void Main(string[] args) { // // 既定の構成ファイルとは別のファイルを構成ファイルとして読み込む. // var configFile = @"Hoge.config"; var exeFileMap = new ExeConfigurationFileMap { ExeConfigFilename = configFile }; var config = ConfigurationManager.OpenMappedExeConfiguration(exeFileMap, ConfigurationUserLevel.None); var connString = config.ConnectionStrings.ConnectionStrings["HogeConnectionString"].ConnectionString; Console.WriteLine(connString); Console.WriteLine("Press <ENTER> to Exit..."); Console.ReadLine(); } } }
実行結果は以下のようになります。
Server=.\SQLEXPRESS;Integrated Security=True;Database=XXXX;Persist Security Info=False Pressto Exit...
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ