2016-06-11 22 views
1

です。設定ファイルでカスタムセクションを見つけることは、ファイルへのパスを使用するときに機能しますが、同じもののexe configファイルマップを渡すと失敗します。どうして?ExeConfigurationFileMapはファイル内のセクションを見つけられませんが、ConfigurationFileMapは

string file = System.Reflection.Assembly.GetAssembly(typeof(PhotoComparison)).Location + ".config"; 

var efm = new ExeConfigurationFileMap() { ExeConfigFilename = file }; 
var cfm new ConfigurationFileMap(file) 

//returns entry 
var o2 = ConfigurationManager.OpenMappedMachineConfiguration(cfm).GetSection("presetFilters"); 

//returns null 
var o3 = ConfigurationManager.OpenMappedMachineConfiguration(efm).GetSection("presetFilters"); 

答えて

0

.NETアプリケーションは、構成ファイルの階層を使用します。私はthis diagramがよく状況を説明していることがわかります。

ExeConfigurationFileMapの使用方法は、実行コンフィギュレーションファイルを設定しています。しかし、OpenMappedMachineConfigurationメソッドを呼び出すと、マシンコンフィグレーションファイルしかロードされません。

あなたは実際にあなたが望むファイルをロードしていないと思います。おそらく、これはあなたのために働くでしょう:

string file = "some config ...";  
// ExeConfigFilename => MachineConfigFilename 
var efm = new ExeConfigurationFileMap() { MachineConfigFilename = file }; 
var o3 = ConfigurationManager.OpenMappedMachineConfiguration(efm).GetSection("presetFilters"); 
関連する問題