【问题标题】:splitting appsettings section of app.config in two parts将 app.config 的 appsettings 部分拆分为两部分
【发布时间】:2014-08-11 16:57:03
【问题描述】:

我有一个 Windows 应用程序,它通过单击一次进行部署。我的 app.config 中的 appsettings 有几个设置。一些设置是特定于部署的,例如文件下载的网络服务器源等。它会因部署区域而异。某些设置项是特定于应用程序的,在部署期间不会更改。

<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 放在单独的配置文件中。我该怎么做。

【问题讨论】:

  • 多变是什么意思?他们将如何改变?
  • 您希望如何/何时进行切换?
  • 摆弄额外的配置并不容易。在同一个文件中使用 Region1Key1 和 Region2Key1 并使用一些辅助方法进行读取可能也能起到同样的作用。
  • 部署团队将根据部署到的区域更改键 1 和 2 的值。这个应用程序基本上是其他应用程序的配置器应用程序。我使许多其他项目可配置,因此我不需要更改主应用程序中的更改代码。它可以被配置。但这不会根据部署区域而改变。

标签: c# .net vb.net


【解决方案1】:

使用 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 没有被新值重写。
  • 不确定出了什么问题。文件是否在同一目录中?配置文件格式是否正确?
  • Region settings.config 不会有 节点吗?
  • 感谢它终于奏效了。这里还需要添加一件事:确保将 regionsettings.config 的“复制到输出目录”属性设置为“始终复制”。之后就可以了。
  • 是的,您需要该设置才能发布
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
相关资源
最近更新 更多