我有一个配置文件app.exe.config和appSettings部分有这样的:
<configuration> <appSettings configSource="app.file.config" /> </configuration>
app.file.config文件有这样的东西:
<?xml version="1.0" encoding="utf-8" ?> <appSettings> <add key="var1" value="value 1" /> <add key="var2" value="value 2" /> <add key="var3" value="value 3" /> </appSettings>
我需要在运行时编辑var1,var2和var3,我有这样的代码:
Configuration config = ConfigurationManager.OpenExeConfiguration("...path\app.exe); config.AppSettings.SectionInformation.ConfigSource = "app.file.config"; config.AppSettings.Settings["var1"].Value = "value 11"; config.AppSettings.Settings["var2"].Value = "value 22"; config.AppSettings.Settings["var3"].Value = "value 33"; config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings");
当我运行config.Save ….文件app.file.config有一个appSettings节点,其属性为“file”.此属性具有app.file.config的值
<appSettings file="app.file.config"> <add key="var1" value="value 1" /> <add key="var2" value="value 2" /> <add key="var3" value="value 3" /> </appSettings>
现在,如果我尝试加载配置文件,我有一个例外,消息“无法识别的属性’文件’.请注意,属性名称区分大小写.”在app.file.config中.
有任何想法吗?
谢谢
解决方法
使用外部配置文件对于应用程序是透明的,
这部分是o.k
</configuration> <appSettings configSource="app.file.config" /> </configuration>
还有这个:
<?xml version="1.0" encoding="utf-8" ?> <appSettings> <add key="var1" value="value 1" /> <add key="var2" value="value 2" /> <add key="var3" value="value 3" /> </appSettings>
将代码更改为:
Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath); config.AppSettings.Settings["var1"].Value = "value 11"; config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings");
引用外部配置文件对应用程序是透明的,
所以你不必直接打电话.您可以使用配置管理器中的默认appSetting部分.
祝好运