【发布时间】:2010-12-23 14:53:39
【问题描述】:
允许团队成员自定义他们自己的 app.config,但在版本控制中保留权威版本的最佳方式是什么?是否最好从源代码控制中排除所有 *.config 文件,并在版本控制中使用 app.config.template 文件?
【问题讨论】:
标签: asp.net configuration app-config
允许团队成员自定义他们自己的 app.config,但在版本控制中保留权威版本的最佳方式是什么?是否最好从源代码控制中排除所有 *.config 文件,并在版本控制中使用 app.config.template 文件?
【问题讨论】:
标签: asp.net configuration app-config
模板方法是我见过的最好的方法。如果您可以自动确定它应该包含什么(例如通过运行脚本来检查适当的值),那么您可以将其包含在构建过程中并自动从模板创建文件。如果您无法自动确定它需要包含什么,请确保您的构建过程将检查配置文件并为开发人员提供有用的指导,以了解在构建工作之前他应该配置什么。
您会希望您的 scm 忽略配置文件本身,这样您的开发人员就不会意外地将其提交到存储库。
【讨论】:
没有一种“最好的方法”。这取决于团队和环境。
与您的团队成员讨论并决定适合您的情况。在您的具体情况下,给您“这是最好的方法”可能行不通。
【讨论】:
很长一段时间以来,我一直认为 Microsoft 让配置管理成为一个彻头彻尾的麻烦。
幸运的是,现在您可以使用 appSettings 的 file 属性和其他部分的 configSource 属性来外部化 appSettings 和 connectionStrings 等部分中的设置。
不幸的是,configSource 的文档隐藏在MSDN 中,这就是为什么我认为它并不广为人知的原因。提供的文档也相当乏味,但这里有更好的解释:
Best Practices for Configuring ASP.NET ConnectionStrings and AppSettings in Web.Config
换句话说,您可以这样做:
<appSettings file="webAppSettings.config">
<add key="UseCache" value="True"/>
<add key="MapsKey" value="1234567890-AA"/>
<add key="SMTPServer" value="smtp.peterkellner.net"/>
</appSettings>
<connectionStrings configSource="WebConnectionString.config">
</connectionStrings>
您也可以将此方法与模板方法结合使用,以处理不同环境的设置。
【讨论】: