我正在创建一个ASP.Net MVC网络应用程序。团队中有多个开发人员需要在web.config文件中设置不同的设置。这些设置用于数据库连接和需要访问的本地Linux虚拟机。我们将来还需要添加其他东西。什么是可用于每个开发人员在web.config中拥有自己的自定义设置的方法,而不必担心将其本地设置提交给源代码控制?
部署配置不起作用,因为它们通过本地开发VS Web服务器运行站点。我们将使用部署配置部署到我们环境中的不同阶段。
答案 0 :(得分:7)
配置XML文件中的大多数部分都允许您使用configSource attribute。我们使用此属性将常见的dev修改部分放入单独的文件中。这些通常修改的部分中的每一个都将具有单独的* .dev.config和* .prd.config文件。源控件(git)忽略了* .dev.config文件。
然后,生产部署会将configSource属性设置为使用* .prd.config文件。同样,这意味着您需要保持两组配置为最新。我开始研究一种解决方案,以便在元素级别保持* .prd.config和* .dev.config文件同步,但是从来没有时间完成它。
答案 1 :(得分:4)
我不确定这是否是最高科技的解决方案,但我只是将我的web.config称为“web.config.sample”,并将web.config添加到svn:ignore。这可以防止开发人员意外地将其签入。
将新密钥添加到web.config时,您只需记住在web.config.sample中复制它。
当开发人员签出新副本时,他们只需重命名和配置此文件。我曾经在几家公司工作,而且我们每次都这样做,所以我不确定是否还有其他方法可以做到这一点。
编辑:您还可以设置预提交挂钩,以确保没有人在包含web.config.sample的目录中签入web.config。
编辑#2:您还可以设置一个提交后挂钩,在更新web.config.sample时通过电子邮件发送所有相关人员,这样他们的应用程序在查找丢失的配置键时就不会失败。我将来会这样做。