Web.config自定义配置部分在单个外部文件Visual Studio 2010中

时间:2012-12-11 20:17:48

标签: visual-studio-2010 configuration web-config

我的项目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条目。

1 个答案:

答案 0 :(得分:0)

从持续交付的角度来看,为每个环境设置单独的配置文件会更直接。

它们可以保存在源中的单独文件夹中,其中'DEV'是项目中保留的默认文件夹。

作为部署脚本/流程的一部分,您可以控制将哪个配置文件部署到每个环境。

我之前看到过你所谈论的那种“链接”,最终的结果通常是迷宫般的配置,每个环境中都有大量的冗余条目。