在构建期间参数化DB连接;使用.net项目

时间:2015-11-30 18:52:38

标签: entity-framework azure msbuild azure-devops

我有一个与数据库通信的.Net 4.5项目(很快将升级到4.6)。现在我在我的web.config文件中参数化了不同的数据库(开发测试生产),看起来像这样

 <add name="DevConnection" connectionString="blah...." />
 <add name="TestConnection" connectionString="blah ... test" />
 <add name="ProductionConnection" connectionString="blah... production" />

我在部署Azure(PaaS或IaaS)之前切换此方法的方法是更改​​以下内容

 public DBContext(): base("DevConnection") // this one is our azure Dev DB
  {

  }

在我的DbContext文件中。

有没有办法可以在右边参数化DevConnection,这样当我在Visual Studio Online中编译一个版本的VSTS或Visual Studio Team Services时,它可以切换数据库以匹配我正在部署的环境?任何有关这种方式的首选方法的见解将不胜感激。

3 个答案:

答案 0 :(得分:2)

您可以使用Web.Config Transformation,详细信息请参考以下链接: http://blogs.msdn.com/b/webdev/archive/2009/05/04/web-deployment-web-config-transformation.aspx

答案 1 :(得分:1)

假设您正在使用新的基于Web的构建系统,您可以使用Visual Studio Build step将.NET项目构建到WebDeploy包,并使用第二个Azure Web App Deployment step将WebDeploy部署到Azure。您不必使用不同的连接字符串,而是将不同的参数传递给WebDeploy部署步骤,以相应地在web.config中设置连接字符串。

您还可以使用当前处于预览状态的新release management将Web部署部署到不同的环境。

答案 2 :(得分:0)

您可以创建单个版本,然后使用版本管理部署到不同的环境。

您可以使用Tokenizer任务更改数据库配置字符串,具体取决于您要部署的环境。默认情况下,任务在VSO中不存在,上传相同的说明在以下链接中。

tokenization VSTS task (github repo)