将app.config的appsettings部分拆分为两个部分

7

我有一个Windows应用程序,它通过ClickOnce进行部署。我的app.config中的appsettings有几个设置。一些设置是部署特定的,比如文件下载的web服务器源等。这将随着部署地区的不同而变化。一些设置项是应用程序特定的,在部署过程中不会改变。

<appSettings >    
   <add key="key1" value="Value111 changable with region" />
   <add key="Key2" value="Value222 changable with region" />

    <add key="key3" value="Value333 NOT changable with region" />
   <add key="Key4" value="Value444 NOT changable with region" />

 </appSettings > 

现在我需要将我的appsettings拆分为两个app.config文件。 我想将key1和key2放在不同的配置文件中。我该怎么做呢?

你所说的“可变”,是什么意思?它们将如何被改变? - Ňɏssa Pøngjǣrdenlarp
你想何时/如何进行转换? - H H
玩弄额外的配置并不容易。在同一文件中使用Region1Key1和Region2Key1,以及一个读取辅助方法,可能也可以达到同样的效果。 - H H
部署团队将根据其所部署的区域更改关键字1和2的值。该应用程序基本上是另一个应用程序的配置器应用程序。我使许多其他项目可配置,以便不需要更改主应用程序中的代码以进行更改。它只需进行配置即可。但这不会根据部署的区域而改变。 - Abbi
1个回答

13
使用appSettings file attribute 并为每个部署区域提供其文件版本。

app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings file="regionsettings.config">
      <add key="key1" value="default value" />
      <add key="commonKey" value="common value" />
  </appSettings>
</configuration>

regionsettings.config (区域 1):

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
    <add key="key1" value="region 1" />
</appSettings>

regionsettings.config (区域 2):

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
    <add key="key1" value="region 2" />
</appSettings>

或者像 Henk 建议的那样:

<add key="region1.key1" value="region1key1 value" />
<add key="region2.key1" value="region2key1 value" />

我尝试了相同的方法,但是我的key1并没有被新值重写。 - Abbi
不确定出了什么问题。文件是否在同一个目录下?配置文件是否格式良好? - Jasen
地区设置.config 不会有 <configuration> 节点,对吗? - Abbi
3
谢谢,最终成功了。还有一件事情需要补充:请确保regionsettings.config文件的“复制到输出目录”属性已设置为“始终复制”。设置完成后就可以使用了。 - Abbi
是的,你需要那个设置来发布。 - Jasen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接