2011-12-01 86 views
13

我正在创建一个ASP.Net MVC网络应用程序。团队中有多名开发人员需要在web.config文件中设置不同的设置。这些设置用于数据库连接和需要访问的本地linux虚拟机。还有其他事情我们将来需要添加。什么是可以用于每个开发人员在web.config中拥有自己的自定义设置的方法,而不用担心将其本地设置提交到源代码控制?多个开发人员使用单个web.config不同的设置

部署配置将不起作用,因为它们通过本地开发VS Web服务器运行站点。我们将使用部署配置来部署到我们环境中的不同阶段。

+2

...和你的源代码控制是? –

+0

@AustinSalonen我们正在使用git –

+0

您是否尝试过使用web.config转换? – frennky

回答

7

配置XML文件中的大多数部分都允许您使用configSource attribute。我们使用这个属性将常用的dev-modified部分放入一个单独的文件中。这些通常被修改的部分中的每一个都有独立的* .dev.config和* .prd.config文件。源代码管理(git)忽略* .dev.config文件。

生产部署会将configSource属性设置为使用* .prd.config文件。这又意味着你需要保持两套配置的更新。我开始研究一种解决方案来保持* .prd.config和* .dev.config文件在元素级别同步,但是没有时间完成它。

+0

是的,保持文件同步的挑战是我愿意处理的,因为它的其余部分非常简单! –

4

我不确定这是最高科技的解决方案,但我只是打电话给我的web.config“web.config.sample”,并将web.config添加到svn:ignore。这会阻止开发人员意外地检查它。

当新的密钥添加到web.config时,您只需记住在web.config.sample中复制它。

当开发人员检出新副本时,他们只需重命名并配置此文件。我曾在几家公司工作过,而且我们每次都这样做,所以我不确定是否有其他方法可以做到这一点。

编辑:您也可以设置一个预先提交挂钩,以确保没有人检入包含web.config.sample的目录中的web.config文件。

编辑#2:您还可以设置一个post-commit挂钩,在web.config.sample更新时将所有参与者发送给e-mail,以便他们的应用程序在查找缺失配置键时不会失败。我将来会这样做。

相关问题