问题 有没有办法让App.config文件引用另一个完整的配置文件? (。净)


更新:这个问题,包括标题,被重新定义,详见历史 

我知道以下App.config包含一个外部文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings configSource="appSettings.config"/>
  <system.net>
    <connectionManagement>
      <add address="*" maxconnection="50"/>
    </connectionManagement>
  </system.net>
</configuration>

但我不知道如何将system.net移动到第二个文件。实际上我没有尝试过,但我几乎肯定它不会工作,我想知道App.config是否有办法通过引用包含另一个App.config文件。


12079
2018-01-28 15:15


起源

为什么要将配置拆分为2个文件而不是一个? - Richard L
因为一个用于库,另一个用于使用库的项目。 - Jader Dias
DLL共享应用程序.config,为什么你需要另一个文件中的system.net部分? - Mesh
这只是避免重复的问题。我想在DLL项目中更改一次设置,当我重建包含DLL项目的其他解决方案时,无需在另一个App.config文件中执行相同的更改即可进行更改。 - Jader Dias


答案:


我想你只需删除configSource属性,然后包含其中的所有内容 <appSettings> 和 <connectionStrings> 分子


0
2018-01-28 15:21



但我仍然需要它是2个单独的文件,第一个引用实际包含配置的第二个文件。 - Jader Dias
问:“dll共享应用程序.config”A:是的,我知道。问:“为什么你需要另一个文件中的system.net部分?”答:这只是一个例子,我的全部动机是看到我写给这个问题的最新评论。 - Jader Dias


我能够使用configSource来实现这一点

<configSections>
    <section name="Sites"
             type="Wap.Common.Configuration.SiteHandler, Wap.Common" />
</configSections>

<Sites configSource="Sites.Prod.config" />

然后在外部配置文件中它需要有?xml标记

<?xml version="1.0" encoding="utf-8" ?>
<Sites>
...
</Sites>

然后您需要设置外部配置文件以始终复制到输出目录


9
2018-01-28 23:13





您不应该将system.net部分放在appSettings.config中。标准做法是子配置文件中的一个配置节点。我甚至不确定是否可以与不同的节点共享同一个文件。

您应该创建另一个名为system.net.config的文件,并将整个主体放在那里,完整

  <system.net>
    <connectionManagement>
      <add address="*" maxconnection="50"/>
    </connectionManagement>
  </system.net>

然后在App.config中,您将更新system.net

  <system.net>
    <connectionManagement configSource="system.net.connectionManagement.config"/>
  </system.net>

6
2018-01-28 18:40



system.net 不能宣布一个 configSource。 - bzlm
更新的答案将configSource 1级更深入,对DV来说毫无意义的答案本质上是正确的,但是从自由手编码中解脱出来...... - Chris Marisic
如果在文档中更容易找到可以和不可以是configSourced的内容,那就太好了。 - Chris F Carroll