我有一些.NET应用程序的文件,它们在生产服务器中与开发服务器不同。例如:
使用SVN管理这些差异的最佳方法是什么?我听说过从维护主干中的配置文件夹到创建带有“不同”文件的分支,然后将它们合并到发布标记中的所有内容。
我使用SVN主干进行主要开发(稳定),并在准备好发布时标记主干。中继部署到我的开发服务器,发布标签通过FTP部署到生产服务器。
答案 0 :(得分:1)
一种可能性是将其留给构建/部署过程。
因此,对于Web.config,您将在SVN中拥有以下内容: Web.config(这可能是你的开发版本) Web.config.qa(如果你有qa环境) Web.config.prod
在构建/部署时,您的部署过程“知道”它正在部署到哪个环境(基于您控制它 - 环境变量,脚本参数等),并在其位置替换正确的配置文件。
我更喜欢这种方法,因为它使您的目录和文件结构保持完整(与配置文件夹相比),以及避免不必要的分支和合并的痛苦。它确实需要尽职尽责地确保在进行非特定于环境的更改时更新所有文件,但无论策略如何,您都要支付这个价格。
答案 1 :(得分:0)
Visual Studio 2010添加了Web.config转换,并在2012年添加了对所有配置文件执行转换的功能。通过这种方式,在您发布到给定环境时会生成正确的配置文件。以下是有关内置选项的一些信息:http://msdn.microsoft.com/en-us/library/dd465326.aspx
您还可以在此处使用优秀的SlowCheetah XML转换扩展程序:http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5
最后,您将拥有Web.config.dev,Web.config.prod,转换在部署期间自动运行的文件,它们都可以保持在版本控制之下,无需分支,合并,差异等