【发布时间】:2009-06-19 10:05:16
【问题描述】:
我相信每个人都必须处理这些情况,我们检查我们的源代码控制解决方案,每台开发机器都有自己的资源用于调试、构建和测试。..
最常见的是:
- Web 服务器 (IIS)
- 数据库 (SQL)
web服务器很容易处理,每台dev机器都会有自己的proj.user文件来指定不同的调试信息。
但是应用程序的连接字符串存储在 web.config 中(受源代码控制),理想情况下,我们不希望 web.config 被“感知”,因此必须在我们委派它们的地方执行配置部分到其他配置文件(不在 sc 下)不是最好的解决方案..
asp.net (.net?) 已经支持具有 web.config 继承的模型,这将是一个理想的场景。但是这只适用于目录。
如果我们能有那就太好了
- web.config
- web.machine.config
当然,我愿意就人们如何解决这个问题提出更好的建议。
喜欢..也许有:
- web.base.config
- web.machine.config
并且有一个通过合并它们来创建 web.config 的构建脚本?
提前致谢, 斯蒂芬。
编辑
看起来下一个 vs 可能有办法处理这个问题:
http://blogs.msdn.com/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx
编辑编辑
今天可以通过 xml 大规模更新来实现:
编辑编辑编辑
这当然可以通过一个简单的 xslt 构建任务和一个复制所有内容并拦截某些属性的小转换来完成。只是尝试了概念验证,这将为我们节省很多挫折,但转换文件可能更多超过人们愿意接受的程度。
基本上我们将 Web.base.config 存储在版本控制中,并通过转换运行它以在构建事件上生成 Web.config。
似乎 vs2010 会在拥有一个更友好的版本方面真正有所帮助。
【问题讨论】:
-
在我的项目中,我有一个受版本控制的 web.svn.config,而 web.config 不是,因为每个开发人员都需要有自己的配置文件。对开发人员 web.config 的更改(除了连接字符串)被手动复制到基于 svn 的配置中。我不知道有什么工具可以合并到 web.configs。
-
这基本上是我们今天所做的,只是我们在源代码控制中使用 web.config.. 尽量避免环境差异,并且有一个丑陋的系统,只要有环境设置,我们就会保留每个开发人员设置那里注释掉了..因此,您从 web.config 更改中做的第一件事就是找到您的特定设置并取消注释它们.. 这似乎与您的方案没有什么不同,只是稍微相反.. 这是有问题的,随着应用程序的发展,它可能需要越来越多的更改,这对开发人员来说是一个严重的拖累。
标签: version-control xslt msbuild web-config