从源代码管理中排除 app.config?
Posted
技术标签:
【中文标题】从源代码管理中排除 app.config?【英文标题】:Exclude app.config from source control? 【发布时间】:2010-12-23 14:53:39 【问题描述】:允许团队成员自定义他们自己的 app.config,但在版本控制中保留权威版本的最佳方式是什么?是否最好从源代码控制中排除所有 *.config 文件,并在版本控制中使用 app.config.template 文件?
【问题讨论】:
【参考方案1】:模板方法是我见过的最好的方法。如果您可以自动确定它应该包含什么(例如通过运行脚本来检查适当的值),那么您可以将其包含在构建过程中并自动从模板创建文件。如果您无法自动确定它需要包含什么,请确保您的构建过程将检查配置文件并为开发人员提供有用的指导,以了解在构建工作之前他应该配置什么。
您会希望您的 scm 忽略配置文件本身,这样您的开发人员就不会意外地将其提交到存储库。
【讨论】:
【参考方案2】:没有一种“最好的方法”。这取决于团队和环境。
与您的团队成员讨论并决定适合您的情况。在您的具体情况下,给您“这是最好的方法”可能行不通。
【讨论】:
【参考方案3】:很长一段时间以来,我一直认为 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>
您也可以将此方法与模板方法结合使用,以处理不同环境的设置。
【讨论】:
以上是关于从源代码管理中排除 app.config?的主要内容,如果未能解决你的问题,请参考以下文章
当我们在TFS中获得最新版本的排除文件时会发生什么?会更新吗?