appsettings文件属性是否覆盖了app.config中的内容?

app.config中的appsettings标记具有文件属性:

 .. ..  

这是如何运作的? 它会将appSettings(原始)中的内容与other.config文件合并吗? 或者它会覆盖它吗? 如果other.config文件不存在,该怎么办?

我自己尝试,如果一个键不在原来的,它似乎没有从other.config读取它?

other.config文件应该只有xml节点,还是应该都在appsettings元素中?

  123  

要么

 123 

  • 如果文件不存在,它将不会崩溃,它将被忽略。
  • 外部配置必须包含appSettings节点,因此您的第一个示例是正确的。
  • 外部文件中的值将优先,如果不存在任何值,则使用app.config值。

这会掩盖一切吗?

关于这个主题的最佳答案之一是: ASP.NET web.config:configSource与文件属性 – 来自@Massimiliano Peluso

file属性

  • 指定包含自定义应用程序配置设置的外部文件的相对路径
  • 特定于appSettings部分
  • 合并 (和覆盖).config文件中的设置
  • 修改指定的文件时不会导致Web应用程序重新启动
  • http://msdn.microsoft.com/en-US/library/ms228154(v=vs.100).aspx
  • 使用配置 。 AppSettings 。 设置 。 添加 API将导致所有设置合并回配置中的主.config 。 保存电话。
  • 从.NET 1.1开始
  • 如果文件不存在,则不会抛出exception。

configSource属性

  • 可以应用于配置文件的大多数部分,而不仅仅是appSettings
  • 将使用外部文件覆盖整个部分不合并
  • 可能导致Web应用程序重新启动
  • http://msdn.microsoft.com/en-US/library/system.configuration.sectioninformation.configsource(v=vs.100).aspx
  • 使用配置 。 AppSettings 。 设置 。 添加 API将导致所有设置添加到Configuration上configSource指定的文件中。 保存电话。
  • 从.NET 2.0开始
  • 如果配置源文件不存在,则抛出System.Configuration.ConfigurationErrorsException

file属性指定包含自定义设置的外部文件,就像在web.config文件的appSettings条目中一样。 同时, configSource属性中指定的外部文件包含您声明configSource的部分的设置。 例如,如果使用pages部分的configSource属性,则外部文件将包含pages部分的设置。

在file属性中指定的外部配置中声明的自定义设置将与web.config文件中appSettings部分中的设置合并。 同时,configSource不支持合并,这意味着您必须将整个部分设置移动到外部文件中。

http://www.codeproject.com/Messages/1463547/Re-difference-between-configSource-and-file-attrib.aspx