gpt4 book ai didi

c# - ConfigurationManager 能否保留对 Save() 的 XML 注释?

转载 作者:IT王子 更新时间:2023-10-29 04:19:08 30 4
gpt4 key购买 nike

我编写了一个小实用程序,允许我为另一个应用程序的 App.config 文件更改一个简单的 AppSetting,然后保存更改:

 //save a backup copy first.
var cfg = ConfigurationManager.OpenExeConfiguration(pathToExeFile);
cfg.SaveAs(cfg.FilePath + "." + DateTime.Now.ToFileTime() + ".bak");

//reopen the original config again and update it.
cfg = ConfigurationManager.OpenExeConfiguration(pathToExeFile);
var setting = cfg.AppSettings.Settings[keyName];
setting.Value = newValue;

//save the changed configuration.
cfg.Save(ConfigurationSaveMode.Full);

这很有效,除了一个副作用。 新保存的.config文件丢失了所有原来的XML注释,但只是在AppSettings区域。是否可以保留原始配置文件AppSettings区域的XML注释?

Here's a pastebin of the full source if you'd like to quickly compile and run it.

最佳答案

我跳进 Reflector.Net 并查看了这个类的反编译源。简短的回答是否定的,它不会保留评论。 Microsoft 编写类的方式是从配置类的属性生成 XML 文档。由于注释没有出现在配置类中,因此它们不会返回到 XML 中。

更糟糕的是,Microsoft 密封了所有这些类,因此您无法派生新类并插入您自己的实现。您唯一的选择是将注释移到 AppSettings 部分之外,或者使用 XmlDocumentXDocument 类来解析配置文件。

对不起。这是 Microsoft 没有计划的边缘案例。

关于c# - ConfigurationManager 能否保留对 Save() 的 XML 注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1954358/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com