在.NET中以编程方式添加应用程序密钥时如何在配置文件中写入空行?

时间:2015-09-22 16:01:14

标签: c# xml app-config

我正在使用下面的代码以编程方式编写App.Config文件的应用程序密钥,但我还想在写入/保存密钥后在App.Config文件中添加一个空白行以便于阅读。这可能吗?如果是这样,怎么样?我找不到答案。

System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

config.AppSettings.Settings.Add(appKey, appKeyValue);

// Save the changes in App.config file.
config.Save(ConfigurationSaveMode.Modified);

1 个答案:

答案 0 :(得分:0)

有可能,不幸的是,这并不令人愉快。请考虑以下内容,它确实添加了空格:

var doc = new XmlDocument();
doc.Load(@"app.config");
doc.PreserveWhitespace = true;
var first = doc.DocumentElement.FirstChild;
doc.DocumentElement.InsertBefore(doc.CreateSignificantWhitespace("\r\n\r\n"), first);
var settings = new XmlWriterSettings();
settings.Indent = true;
settings.NewLineChars = "\r\n";
using (var writer = XmlWriter.Create(@"app.config", settings))
{
    doc.Save(writer);
}

遗憾的是,在添加的重要空白节点之后忽略了XmlWriterSettings.Indent设置,并将所有节点放在一行上。我认为这可能是一个错误,或者重要的空白正在选择“全有或全无”格式,然后您必须控制文档的完整格式。

但是,如果您接受评论节点,则效果会更好:

var doc = new XmlDocument();
doc.Load(@"app.config");
doc.PreserveWhitespace = true;
var first = doc.DocumentElement.FirstChild;
doc.DocumentElement.InsertBefore(doc.CreateComment(""), first);
var settings = new XmlWriterSettings();
settings.Indent = true;
settings.NewLineChars = "\r\n";
using (var writer = XmlWriter.Create(@"app.config", settings))
{
    doc.Save(writer);
}