在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内置的内容? 这似乎是一个常见问题,但我没有找到任何关于此的问题(有答案)。

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

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

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

我使用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/

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

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