在 Visual Studio 在线 VSO 中使用 .net 项目在构建和部署期间参数化数据库连接

parameterize DB connection during Build & deployment in Visual Studio Online VSO with .net project

我有一个与数据库对话的 .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 aka VSTS 或 Visual Studio Team Services 中排队构建时,它可以切换数据库与我要部署到的环境相匹配? 任何有关执行此操作的首选方法的见解都将不胜感激。

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

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

可以使用Web.Config转换,具体参考以下链接: http://blogs.msdn.com/b/webdev/archive/2009/05/04/web-deployment-web-config-transformation.aspx

您可以创建单个构建,然后使用 Release Management 部署到不同的环境。

您可以使用 Tokenizer 任务根据要部署到的环境更改数据库配置字符串。默认情况下,VSO 中没有任务,上传任务的说明在下面 link.

tokenization VSTS task (github repo)