2016-09-19 6 views
0

Configurationクラスからいくらか奇妙な動作を得ています。 AppDomain.CurrentDomain.SetupInformation.ConfigurationFileでこの設定でこのコードConfiguration.SaveAsは空の設定を書き込みます

class Program 
{ 
    static void Main(string[] args) 
    { 
     var configFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile; 
     var configuration = ConfigurationManager.OpenExeConfiguration(configFile); 
     var value = configuration.AppSettings.Settings["Supercali"]; 
     if (value != null) Console.WriteLine("Yay, it finally worked!"); 
     else Console.WriteLine("Still broken."); 
     configuration.SaveAs("ReadConfig.config"); 
    } 
} 

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> 
    </startup> 

    <appSettings> 
    <add key="Supercali" value="Fragalistic"/> 
    </appSettings> 
</configuration> 

は "ReadConfig.config"

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
</configuration> 

と版画まだ破らこの

に次を書き込みます。

デバッグビューで見ると、AppDomain.CurrentDomain.SetupInformation.ConfigurationFileには正しいファイルがありますが、OpenExeConfigurationは空白の設定を作成するようです。 appSettingsセクションは空です。私はこれが間違っていると確信していますが、多分何かが欠けていますか?

答えて

1

これを試してみてください:

 var configFile = Assembly.GetExecutingAssembly().Location; 
     var configuration = ConfigurationManager.OpenExeConfiguration(configFile); 
     var value = configuration.AppSettings.Settings["Supercali"]; 
     if (value != null) Console.WriteLine("Yay, it finally worked!"); 
     else Console.WriteLine("Still broken."); 
     configuration.SaveAs("ReadConfig.config"); 

OpenExeConfigurationはない.configファイルへ、DLL/EXEへのパスを期待しています。

+0

Doh、それでした!ありがとう! – jzx

関連する問題