在ASP.Net中处理web.config文件版本的最佳方法是什么?

时间:2010-04-14 02:56:04

标签: c# asp.net web-config

我有一个ASP.Net网站(ASPX和ASMX页面),其中包含一个web.config文件。我们有开发版和生产版。随着时间的推移,用于开发和生产的web.config文件已大大分化。

在源代码管理中保留两个版本的web.config的最佳做法是什么(我们使用Tortoise SVN,但我认为这不重要)?看起来我可以添加名为“web.config.prod”的生产web.config文件,然后当我们转换所有文件时,我们只需添加删除现有web.config和重命名web.config的步骤。 .prod到web.config。

虽然我确信它会起作用,但这看起来很糟糕。是否有一些机制来处理Visual Studio内置的内容?这似乎是一个常见的问题,但我没有找到任何关于此的问题(答案)。

3 个答案:

答案 0 :(得分:5)

我在构建时使用nant。在SVN上,我有一个web.config.template,其中包含使用属性文件扩展的参数。每个环境都有自己的属性文件,其中包含不同的值。

简而言之,我没有SVN上的web.config,而是一个模板。

像这样的东西

http://www.cptloadtest.com/2007/09/22/Managing-Multiple-Environment-Configurations-Through-NAnt.aspx

NAnt:http://nant.sourceforge.net/

答案 1 :(得分:3)

我们使用您描述的确切方法,效果很好,例如我们有:

  • web.config (适用于本地开发)
  • web.Dev.config (构建服务器,在签到时构建)
  • web.QC.config (测试环境)
  • web.Prod.config (制作)

每个环境的构建脚本只删除web.config并重命名它所在的位置。通过这种方式,您可以轻松地对所有这些进行控制,并且可以非常快速地进行差异,并查看环境之间可能存在的差异。全面更新配置值也更容易......下次推送到该环境时,它将获得新的配置。

答案 2 :(得分:1)

Visual Studio 2010添加了一项名为XDT Transforms的新功能,该功能可自动组合多个Web.config文件以用于不同的配置。

但是,VS2008不包含任何此类功能。