.net 包含特定于环境的设置的配置文件

.net 包含特定于环境的设置的配置文件,.net,aop,config,.net,Aop,Config,在我的组织中,我们有多个环境(Dev、QA、Stage、Prod、灾难恢复),我希望我的app/web.config文件在URI、连接字符串等中不包含特定于环境的详细信息。我首选的方法是执行运行时替换,例如。 与此相反: 您应该能够通过派生提供此替换的自定义类来完成此操作 我建议大家在网上多读些东西。它描述了创建您自己的设置体系结构的过程,包括设置您自己的处理程序,该处理程序可以从任何源读取,或在该过程中执行其他工作。一种方法是将ConfigSource用于配置部分(appSettings、Co

在我的组织中,我们有多个环境(Dev、QA、Stage、Prod、灾难恢复),我希望我的app/web.config文件在URI、连接字符串等中不包含特定于环境的详细信息。我首选的方法是执行运行时替换,例如。 与此相反:


您应该能够通过派生提供此替换的自定义类来完成此操作


我建议大家在网上多读些东西。它描述了创建您自己的设置体系结构的过程,包括设置您自己的处理程序,该处理程序可以从任何源读取,或在该过程中执行其他工作。

一种方法是将ConfigSource用于配置部分(appSettings、ConnectionString等)。有关详细信息,请参阅。这样,web/app.config可以包含核心信息,并且可以在该环境的文件中设置唯一的环境设置。

我们有一个构建后nant脚本,它使用XPath来识别和替换特定于环境的值,具体取决于我们针对的环境。默认情况下,所有配置值都适用于开发环境。这给构建过程增加了一个短暂的延迟,但在实践中证明是一个非常稳健的解决方案-即没有混乱或交叉的环境设置。

我们将设置移到了数据库中,从那以后就不必处理这个问题,请参见我完全同意这种替代是可取的,并且


不过,微软对此并不感兴趣:(

当您试图找到一种执行运行时替换的方法时,我建议在这种情况下,构建时替换将是一个更好的解决方案。例如,我们在构建期间使用nant任务替换配置值。 您也可以尝试在或中替换web.config节 MSBuild社区任务()中的XmlMassUpdate任务