代码之家  ›  专栏  ›  技术社区  ›  Nick

如何为多个环境处理多个web.config文件?

  •  25
  • Nick  · 技术社区  · 15 年前

    我目前处理此问题的方法是使用多个配置文件,例如:

    web.config
    web.Prod.config
    web.QA.config
    web.Dev.config
    

    当项目部署到不同的环境时,我只需使用正确的设置重命名相应的文件。

    有人对如何更好地处理这个问题有什么建议吗?

    编辑:

    • WCF客户端端点URL和安全性
    • 自定义数据库配置
    • 会话连接字符串
    • log4net设置
    9 回复  |  直到 15 年前
        1
  •  19
  •   Community leo1    7 年前

    斯科特·顾有一个 article 就这一次。他提出的解决方案是使用预构建事件根据所选的构建配置将正确的配置复制到位。

    我还注意到已经有类似的 question 就这样。

        2
  •  6
  •   user1824408    12 年前

    转换似乎对此非常有用。可以用不同的规则替换某些部分。

    http://msdn.microsoft.com/en-us/library/dd465318(v=vs.100).aspx

        3
  •  2
  •   Andrew Barrett    15 年前

    <appSettings file="../AppSettingsOverride.config">
        <add key="key" value="override" />    
        ...
    </appSettings>
    

    这只适用于appSettings部分,因此只在一定程度上有用。我对更健壮的解决方案非常感兴趣。

    http://channel9.msdn.com/shows/10-4/10-4-Episode-10-Making-Web-Deployment-Easier/

    VS2010的配置转换看起来非常棒,可以轻松完成多种配置。

        4
  •  1
  •   BC.    15 年前

        5
  •  1
  •   Ken Browning    15 年前

    我最喜欢的解决方法是使用 configSource 属性诚然,我只在一个元素上使用它( <connectionStrings> )但它确实提供了一种简单的方法来交换web.config的不同部分(我在安装期间通过WebSetup项目进行交换)。

        6
  •  1
  •   dtc    15 年前

    我还使用web.DEV.config、web.TEST.config、web.PROD.config等。

    如果你的项目不复杂,我觉得这是最简单、最简单、最直接的方法。我不喜欢把事情弄得过于复杂。

    http://aspnet.4guysfromrolla.com/articles/120104-1.aspx

    http://nant.sourceforge.net/

    我将它与CruiseControl.net和NUnit一起使用,通过单元测试验证执行自动每日构建,并认为它们配合得很好。

        7
  •  0
  •   Corey Sunwold    15 年前

    这实际上取决于导致您使用不同web.config文件的环境之间的差异。您能否提供更多信息,说明为什么每个环境当前需要不同的环境?

        8
  •  0
  •   Timur Fanshteyn    15 年前

    我们有一些变通方法(并非所有方法都是使用web.config完成的,但思路相同)

    1. 我们在打包部署中包括多个配置文件。在安装过程中,我们指定要安装的环境。
    2. 将所有特定于环境的设置迁移到该环境的数据库服务器。Web服务器在请求服务器名称时提供其环境
    3. 2和3的组合(基于环境覆盖部分设置-例如应用程序服务器名称)
        9
  •  0
  •   leftnode    15 年前

    通过大多数不同的版本管理软件(subversion、git等),您可以忽略特定的文件。

    configure.template.php-此文件已进行版本控制,并包含模板化的配置数据,例如空DSN

    在subversion中,实现这一点的方法是:

    svn pe svn:忽略。 它会打开你的编辑器,然后你输入 configure.php

    保存、退出、签入更改,就可以开始了。