【问题标题】:App.config v.s. Web.config: which has priority?App.config 与Web.config:哪个优先?
【发布时间】:2014-03-10 16:19:55
【问题描述】:
假设一个项目同时包含 App.config 和 Web.config 文件,其中包含一些相互冲突的信息。是否有任何规则哪个文件具有更高的优先级?还是应用程序必须同时忽略它们并抛出异常?
【问题讨论】:
-
-
我认为,这是您可以在 5 分钟内完成的测试。在 app.config 和 web.config 中添加一些设置。比方说, 和 并在您的应用中进行测试,您会得到 AAA 或 BBB。
标签:
c#
.net
configuration
app-config
web-controls
【解决方案1】:
来自 .NET 4.5 的 MSDN:
在 Visual Studio 中配置服务时,使用 Web.config 文件或 App.config 文件来指定设置。配置文件名的选择取决于您为服务选择的托管环境。 如果您使用 IIS 来托管您的服务,请使用 Web.config 文件。如果您使用任何其他托管环境,请使用 App.config 文件。
在 Visual Studio 中,名为 App.config 的文件用于创建最终配置文件。实际用于配置的最终名称取决于程序集名称。例如,名为“Cohowinery.exe”的程序集的最终配置文件名为“Cohowinery.exe.config”。但是,您只需要修改 App.config 文件。对该文件所做的更改会在编译时自动对最终的应用程序配置文件进行。
在使用 App.config 文件时,配置系统会在应用程序启动并应用配置时将 App.config 文件与 Machine.config 文件的内容合并。此机制允许在 Machine.config 文件中定义机器范围的设置。 App.config 文件可用于覆盖 Machine.config 文件的设置;您还可以锁定 Machine.config 文件中的设置,以便使用它们。在 Web.config 案例中,配置系统将通向应用程序目录的所有目录中的 Web.config 文件合并到应用的配置中。有关配置和设置优先级的更多信息,请参阅 System.Configuration 命名空间中的主题。
对于那些使用 MS Azure 的人来说,这也是一篇很棒的帖子,解释了 ApplicationSettings、appSettings (app.config/web.config) 和 的区别配置设置 (.csdef / .cscfg):
http://haishibai.blogspot.com/2012/09/windows-azure-cloud-service.html