这是场景:我在一个 asp.net mvc 4 项目上有多个开发人员。每个开发人员都有一个本地数据库。源代码控制系统是http://tfs.visualstudio.com上的 TFS 。我们使用 Azure 网站来托管该网站。我们还配置了 Azure 网站以进行持续部署。
源代码控制系统可以是 git、mercurial、TFS 等。老实说,我认为这并不重要。
我的问题是如何完成这三件事:
- 每个开发人员在本地都有他/她自己的连接字符串(没有他们在源代码控制中)
- Azure 有自己的连接字符串(没有它在源代码控制中)
- 源代码管理不显示任何连接信息
- 每个开发人员能够 F5 并在本地运行/调试/测试应用程序。
我们通过将单独的连接字符串添加到我们的 machine.config 来完成 #1,这样开发人员工作站设置之间就不会发生冲突。
我最初从 web.config 中删除了连接字符串部分。在 Azure 网站(使用管理门户,在配置下)中,我配置了连接字符串,在观看 Scott Hanselman 视频后,我的印象是这些将在部署时动态合并到我的 web.config 中,但事实并非如此似乎发生。每当我转到任何访问数据库的页面时,都会收到一条错误消息,提示找不到连接字符串(或与连接相关的其他数据库错误)
如果我将 Azure 连接字符串直接放在 web.config 中,Things 可以在 Azure 上运行,但是连接详细信息在每个人都可以看到的源代码控制中。
在阅读了 Scott 和 David Ebbo 的更多帖子后,我似乎可以在 web.config 中放置一个空白连接字符串(使用正确的名称),然后 Azure 将正确覆盖这些值。然后我必须让开发人员将他们的连接字符串放在他们的 web.debug.config 中,然后安装 Slow Cheetah 插件,以便他们可以 F5 并在本地进行测试。他们也不必将 web.debug.config 签入源代码管理。(使用 TFS 不是那么容易)这似乎是一个非常繁重的组合,它肯定会在某个地方失败。
我必须相信这并不是一个罕见的问题。其他团队如何做到这一点?