【发布时间】:2015-02-25 19:15:51
【问题描述】:
我有一个配置文件 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 有一个带有属性“file”的 appSettings 节点。此属性的值为 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 中。
如果我手动删除文件属性,配置文件加载正常。
有什么想法吗?
保存配置文件时如何避免写入文件属性。
谢谢
【问题讨论】:
-
从来没有这样做过,如果你省略 ConfigSource = "app.file.config"; 这行会发生什么
-
肯尼,我不明白你的意思。请问,你能详细解释一下吗?
-
删除代码时会发生什么 "config.AppSettings.SectionInformation.ConfigSource = "app.file.config";"
-
您的第一个标签中有错字,对吧?因为你要关闭它。
-
感谢 Vitor Canova。这是一个打字错误