在.NET web.config文件中管理测试/ prod连接字符串的正确方法

时间:2017-04-10 12:31:22

标签: c# .net

我有我维护的应用程序的源代码。在我的web.config文件中,我有我的测试和生产数据库的连接字符串,如下所示:

<add name="conn" connectionString="Data Source=TestDBServer; (etc...)">

<add name="conn" connectionString="Data Source=ProdDBServer; (etc...)">

每当我参加测试时,我只会注释掉生产连接字符串,反之亦然。例如,当我完成测试时,我会注释掉测试连接字符串并取消注释生产连接字符串,然后进行部署。

我作为开发人员的职业生涯很早,但在我看来,必须有更好或更标准的方法来处理这个问题。我该怎么办?

修改

Guilherme Lofrano Corneto联系了一个完全回答我自己问题的相同问题。我已经将我的标记重复了一遍。这是链接:

Change connection string from development to production when publishing

3 个答案:

答案 0 :(得分:2)

Visual Studio可以根据您当前活动的构建配置自动转换web.config。所以你应该有一个构建配置“Test”,“Dev”,“Prod”等(无论你需要什么工作流程)。

然后,您可以右键单击web.config,然后单击“添加转换”。这将创建一个新的配置,如web.Prod.config,您可以在其中覆盖您的配置值。使用特定的构建配置构建时,visual studio会自动使用相应的转换覆盖默认的web.config

如果您需要将此类转换应用于除web.config以外的其他文件,您可能需要检查“SlowCheetah - XML Transforms”等扩展名

答案 1 :(得分:2)

您可以按照以下步骤进行transform web config file during deployment

以下是简短摘要:

1-在web.config文件中设置开发连接字符串。看起来应该类似于:

 <connectionStrings>
    <add name="ConnStringDb1"  connectionString="Data Source=TestDBServer; (etc...)" />
  </connectionStrings>

2-展开您的web.config文件并打开web.release.config

enter image description here

3-使用Replace功能将连接字符串替换为您要部署的连接字符串。在此示例中,您可以使用xdt:Locator="Match(name)"属性将其与连接字符串(ConnStringDb1)的名称进行匹配:

<connectionStrings>
    <add name="ConnStringDb1"  xdt:Transform="Replace" xdt:Locator="Match(name)" 
         connectionString="Data Source=ProdDBServer; (etc...)" />
  </connectionStrings>

有关transformation syntax in web.config的更多信息。

答案 2 :(得分:0)

  1. 我的团队通常会保留&#34; dev&#34;设置为TFS中的默认设置。如果所有团队成员都安装相同的SqlServer&#34;实例&#34;所以,如果与开发者没有区别。
  2. 示例:     &#34;本地主机\ SqlServ2014Stand

    或类似的东西。

    1. 对于QA,Staging,UAT,Production(无论你怎么称呼它们)的部署......我们编写wix安装程序(每个产品一个),我们在wix中处理xml-transforms项目。这将改变不同环境的连接字符串(或其他任何内容)。

    2. 您可能希望查看CruiseControl.NET或Jenkins或TFS等CI服务器。这将以一致的方式构建您的代码。这需要一点时间来设置。如果时间是主要因素,我会尝试詹金斯。