29

*.gitignore在更大的团队中工作时,我尝试了几种方法来管理连接字符串。

从gitignore的官方.gitignore文件存储库中,我下载了VisualStudio.gitignore并将其用作所有项目的起点。

同样的过程可以通过访问http://gitignore.io/,输入 VisualStudio,然后下载文件来完成。

在此处输入图像描述

我目前使用的方法是利用SectionInformation.ConfigSource 属性

<connectionStrings configSource="myConnectionStrings.config" />

然后将myConnectionStrings.config添加到.gitignore,这很好,因为它不会添加整个*.config.

您也可以在另一个项目(您的MyProject.Data层)中使用相同的myConnectionStrings.config

<configuration>
  <connectionStrings configSource="myConnectionStrings.config"/>
</configuration>

请记住始终设置复制

在此处输入图像描述

我也尝试过使用Git - Ignoring a specific modify to a config file中描述的过滤器 ,但我发现这太过分了。

我想知道是否还有其他被认为是最佳实践的方法?

4

2 回答 2

1

我不能代表你的设置,但这就是我解决这个问题的方式。

首先,我团队中的所有人员都使用将集成安全设置为 true 的本地数据库。这意味着当我们从源代码管理中签出文件时,最好使用本地设置。所以我的 Web 配置文件看起来像这样

<add name="appConnString"
   connectionString="Data Source=(local);Initial Catalog=MyDatabaseName;Integrated Security=True;"
   providerName="System.Data.SqlClient" />

关于部署到不同的环境,您的第一个选择是使用转换。如果您不知道那是什么,请阅读此处

由于我们使用 Octopus Deploy 作为我们的部署工具,因此我们的转换文件具有“web.release.config”的连接字符串,如下所示

<add name="appConnString"
   connectionString="{{appConnString}}"
   xdt:Transform="Update" 
   xdt:Locator="Match(name)" />

当 Octopus 运行时,它会抓取 web.config 并使用发布文件覆盖相关部分。然后根据我要部署到的环境/机器/分支,它将 {{appConnString}} 替换为已为该部署设置的配置。

我确信 Visual Studio 有几乎相同的过程。

如果您不喜欢转换过程。您还可以使用 parameters.xml 文件。msdepoy 在构建时使用此文件替换 web.config 中的值。你可以在这里阅读更多关于它的信息。

另一个考虑因素是,如果您使用 Azure 进行托管,则可以在各种部署槽上设置某些配置替换,一直到生产。

这些只是我使用过并看到被非常有效地使用的一些技术。有些人需要一点时间来适应,而且设置起来也很沮丧,但从长远来看,拥有一个适当的部署系统会有所回报。

于 2017-09-27T09:49:25.883 回答
-12

也许有点自以为是,我认为不需要将 shell glob 添加到文件中的策略。在阅读此问题之前,我从未听说过“connectionStrings”,但据我所知,它们拥有各种后端的 URI / 凭据。

后端多久更改一次?更好的是,配置文件的路径多久更改一次?可能不够频繁,不足以保证政策。您唯一需要的是命名包含这些连接字符串的配置文件的约定,以便使用自动化工具轻松识别它们。

因此,请使用您的工具或编写脚本并将 foobarService.config 附加<connectionStrings configSource="foobarService.config" />到所有后端的 .gitignore 文件中。

1. 查找文件。

$ find -name cs.xml

./more/configs/here/cs.xml
./cs.xml
./some/sub/folder/cs.xml

2. 获取配置文件名

$ find -name cs.xml | xargs grep -ho '[^"]\+\.config'

getImagesService.config
users.config
ldap.config
foobar2k.config
ratpoison.config
moo.config
foo.config
trololol.config
moreconfigz.config
myConnectionStrings.config
data.config
base.config
filebackend.config
offsitewhatever.config

3.忽略他们

$ find -name cs.xml | xargs grep -ho '[^"]\+\.config' >> .gitignore

4.更新你的简历

  • 2014 年 3 月 - connectionString 策略的首席设计师

我很困惑,有人会询问有关管理 .gitignore 文件的建议。这可能表明我没有看到大局。您能否用一些背景信息更新您的问题?我很好奇为什么这是一个有意义的问题,因为我很难理解需要建立最佳实践来将字符串附加到文件中。

于 2014-03-05T03:58:08.223 回答