我有我维护的应用程序的源代码。在我的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
答案 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
3-使用Replace
功能将连接字符串替换为您要部署的连接字符串。在此示例中,您可以使用xdt:Locator="Match(name)"
属性将其与连接字符串(ConnStringDb1)的名称进行匹配:
<connectionStrings>
<add name="ConnStringDb1" xdt:Transform="Replace" xdt:Locator="Match(name)"
connectionString="Data Source=ProdDBServer; (etc...)" />
</connectionStrings>
答案 2 :(得分:0)
示例: &#34;本地主机\ SqlServ2014Stand
或类似的东西。
对于QA,Staging,UAT,Production(无论你怎么称呼它们)的部署......我们编写wix安装程序(每个产品一个),我们在wix中处理xml-transforms项目。这将改变不同环境的连接字符串(或其他任何内容)。
您可能希望查看CruiseControl.NET或Jenkins或TFS等CI服务器。这将以一致的方式构建您的代码。这需要一点时间来设置。如果时间是主要因素,我会尝试詹金斯。