为不同的方案配置web.config

时间:2012-06-14 15:06:54

标签: asp.net web-config settings

我有一些项目,我们有3-5个不同的web.config.xxx,它们应该满足不同的场景,开发人员计算机,构建服务器,测试服务器,生产服务器,生产内部,生产外部。 xxx只是描述它所属环境的标记。

这些web.config大部分是相同的,诸如connectionsstrings,integrationpoints,mailserver等之类的东西是不同的,但结构或多或少相同。因此,如果我在web.config中添加一个值,我必须将其写入几个文件,如果我更改了值,我必须在解决方案中的所有web.configs中更改它...这很容易我想我以后会这样做,我可能会更改名称,我不确定这是否正确..所以当我们有时候来到制作时我们会错过价值观,那就是尴尬。问题是这是一个容易消除的问题。

如何处理这种情况?我开始研究可以检查构建配置并执行一些简单替换的“预构建事件”,如果我在调试中构建,则将{db}更改为DevDB。如果我为构建服务器构建,我可以使用构建配置并对该环境进行适当的替换。

有没有一种优先处理方式?

1 个答案:

答案 0 :(得分:1)

听起来你会从配置转换中受益。

  

部署网站时,您经常希望部署的应用程序的Web.config文件中的某些设置与开发Web.config文件不同。例如,您可能希望禁用调试选项并更改连接字符串,以便它们指向不同的数据库。

下面的源代码说明了如何配置在部署期间自动应用的web.config转换文件,以便对web.config进行更改。

来源:How to: Transform Web.config When Deploying a Web Application Project

注意:此技术可应用于任意数量的部署(分段,测试,生产,Foo,Bar等)。

通常,在项目中,您将拥有1个web.config文件。与此相关联的可能是web.production.config,web.staging.config等。每个web。*。config文件都是一个转换,其中包含一些用于修改web.config中各种值的语言,例如连接字符串。每个转换文件都与部署期间通常会选择的部署选项相关联(Visual Studio顶部的小下拉列表通常设置为“Debug”)。