从 config 加载一些,从 configSource 加载一些

Loading some from config and some other from configSource

我有一个带有 <appSettings> 标签的配置文件。我希望其中一些保持不变,并从另一个配置文件加载其中一些。

Web.config:

<appSettings>
  <add key="commonKey1" value="commonValue1" />
  <add key="commonKey2" value="commonValue2" />
  <add key="commonKey3" value="commonValue3" />
  <!-- ??? -->
</appSettings>

AdditionalSettings.config

<appSettings>
  <add key="AdditionalKey1" value="AdditionalValue1" />
  <add key="AdditionalKey2" value="AdditionalValue2" />
</appSettings>

结果:Web.config 编译后应如下所示:

<appSettings>
  <add key="commonKey1" value="commonValue1" />
  <add key="commonKey2" value="commonValue2" />
  <add key="commonKey3" value="commonValue3" />
  <add key="AdditionalKey1" value="AdditionalValue1" />
  <add key="AdditionalKey2" value="AdditionalValue2" />
</appSettings>

如果所有的值都存储在单独的文件中就很容易了:

<appSettings configSource="Settings.config" />

但我不知道如何合并两个文件,如果一些标签应该出现在基本文件中,并且只应该从一个单独的文件中加载额外的标签。

我也试过了

<appSettings configSource="Settings.config">
  <add key="commonKey1" value="commonValue1" />
  <add key="commonKey2" value="commonValue2" />
  ... etc

但这行不通:A section using 'configSource' may contain no other attributes or elements.

当然我不能只创建两个标签(一个有具体值,另一个有 configSource),结果是:

There is a duplicate 'system.web.extensions/scripting/scriptResourceHandler' section defined

有人可以帮忙吗?甚至有可能,还是有另一种方法可以解决这个问题?

在这上面浪费了太多时间之后,我得出了结论:

<appSettings configSource="Settings.config">
  <add key="commonKey1" value="commonValue1" />
  <add key="commonKey2" value="commonValue2" />
  ... etc

是非法的,但是:

<appSettings file="Settings.config">
  <add key="commonKey1" value="commonValue1" />
  <add key="commonKey2" value="commonValue2" />
  ... etc

非常好...所以这一切都归结为将 configSource 属性更改为 file 属性。现在可以正常使用了。