我的项目web.config中定义了一些自定义配置部分,使用当前的web.config设置,这些部分都没有问题。我现在正尝试将其中一些自定义配置部分以及appSettings条目提取到自己的.config文件中,因为值正在从环境(DEV,QA,UAT,PROD)更改。
我遇到的问题是,如果我的自定义配置部分指向同一个文件,则每个人都希望根元素是该类型。下面是尝试使用web.config设置的片段。
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="custom1" type="Namespace.custom1, myProject"/>
<section name="custom2" type="Namespace.custom2, myProject"/>
</configSections>
<custom1 file="/Dev.config">
</custom1>
<custom2 file="/Dev.config">
</custom2>
<appSettings file="/Dev.config">
... non environment specific entries
</appSettings>
</configuration>
在我的Dev.config文件中,我有以下部分
<?xml version="1.0"?>
<custom1>
<customVal1 attr1="abc" attr2="xyz"/>
</custom1>
<custom2>
<diffCustomVal1 difAttr1="True" difAttr2="Jim"/>
</custom2>
<appSettings>
... environment specific entries
</appSettings>
我看过网上但没有发现任何我喜欢的想法。我想知道其他人是如何解决这个问题的。我还尝试从不同的自定义配置部分创建一个单一的外部配置,将上面显示的部分放在该文件中,但之后程序无法从该配置文件中提取appSettings条目。
答案 0 :(得分:0)
从持续交付的角度来看,为每个环境设置单独的配置文件会更直接。
它们可以保存在源中的单独文件夹中,其中'DEV'是项目中保留的默认文件夹。
作为部署脚本/流程的一部分,您可以控制将哪个配置文件部署到每个环境。
我之前看到过你所谈论的那种“链接”,最终的结果通常是迷宫般的配置,每个环境中都有大量的冗余条目。