0

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

4

1 回答 1

0

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

它们可以保存在源代码中的单独文件夹中,“DEV”是与项目一起保存的默认文件夹。

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

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

于 2012-12-11T20:29:11.853 回答