从源代码管理中排除 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 属性来外部化 appSettingsconnectionStrings 等部分中的设置。

不幸的是,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?的主要内容,如果未能解决你的问题,请参考以下文章

从 TFVC 源代码管理中排除 Nuget 包的步骤是啥?

当我们在TFS中获得最新版本的排除文件时会发生什么?会更新吗?

如何配置 Monolog 从日志中排除 404 错误

对象引用未设置为从代码中更改 app.config 中连接字符串的对象实例 [重复]

如何在app工厂模式中管理额外的模块?

从 app.config 文件中读取