1

我试图弄清楚更新现有应用程序的 app.config 文件以包含新的应用程序设置而不覆盖预先存在的设置值的最佳做法是什么。

因此,从头开始,我有一个项目,它通过 Visual Studio 安装项目内置到 MSI 中,并且该 MSI 用于安装应用程序。此应用程序已安装在大约 1000 多个位置。现在,在应用程序的新版本中,我们有一个新的应用程序设置来定义 Web 服务端点。但是,安装项目不会使用新设置部署新的 app.config,因为安装项目就像那样愚蠢,并且它们只会安装一个 app.config,如果它不存在,或者现有的有匹配创建和修改日期,以避免覆盖用户定义的配置。

现在,由于我无法覆盖 app.config,我想也许我会将 app.config 更改部署为单独的 XML 文件,并且在应用程序启动时,我将加载这个单独的 XML 文件,将所有设置复制出来它,与实际的 app.config 文件中的内容进行比较,任何缺失的内容我都会保存到 app.config 文件中。

但我在从外部 XML 文件加载配置并将其复制到 app.config 时遇到问题。我该怎么做呢?还有其他更好的方法来管理更新 app.config 文件吗?什么是最佳实践?

我更熟悉 Java,这对于属性文件来说是一件非常简单的事情,但对于 .NET 配置文件来说似乎并不那么简单。

4

2 回答 2

1

据我所知,没有开箱即用的方法。

我会通过将文件解析为 XDocument,然后检查 doc.Element("settingName") 是否为空来做到这一点。如果是,则该设置不存在,您可以添加默认值。如果节点确实存在,则用户已定义自定义设置。

于 2013-01-28T17:58:56.820 回答