为每个版本环境转换Azure网站部署的web.config

时间:2016-05-16 17:58:12

标签: azure-devops azure-deployment

在Visual Studio Team Services(Visual Studio Online)中,我有三个发布环境,每个环境都有一个Azure网站部署步骤。

我可以通过指定拾取Web.Uat.config的“BuildConfiguration”变量(例如Uat)来转换构建步骤的web.config。

但是我有多个使用此构建配置的发布环境,它们都需要转换Web配置(例如Dev,Test,Uat,Live)。

是否可以在Azure网站部署步骤之前指定要用于每个版本环境的Web配置转换?

注意:我意识到可以在Azure门户网站的“所有设置”下为网站指定简单的应用程序和连接字符串,但我需要做的不仅仅是转换这些简单的设置,并且已经为每个环境配置了Web配置转换在我的解决方案中

2 个答案:

答案 0 :(得分:5)

作为Release Management Utility Tasks一部分的tokenizer任务允许根据环境转换配置文件。

可以使用包含所有环境的所有配置的单个JSON配置文件,任务将根据环境自动选择正确的配置。

{
  "<environment>": {
    "CustomVariables": {
    "Variable1": "value1",
    "Variable2": "value2",
  },
    "ConfigChanges": [
        {
          "KeyName": "/configuration/appSettings/add[@key='ServiceURL']",
          "Attribute":"value",
          "Value":"https://ServiceURL"
        },
        {
          "KeyName": "/configuration/appSettings/add[@key='EnableDebugging']",
          "Attribute":"value",
          "Value":"false"
        },
        {
          "KeyName":“/configuration/connectionStrings/add[@name='databaseentities']”,
          "Attribute": "connectionString",
          "value": "Integrated Security=True;Persist Security Info=False;Initial Catalog=DB;Data Source=servername"
        }
    ]
}

像这样,您可以在单个JSON文件中拥有许多环境及其配置,并且tokenizer任务将根据部署的环境修改您的配置。

阅读以上链接的详细信息以了解更多信息。

答案 1 :(得分:1)

在构建过程中转换Web.config,如果从“Build”生成部署包,然后将其部署在“Release”中,则在部署之前无法对其进行转换。

您可以在部署之前使用Web Deploy Parameterization更新web.config中的值。更多信息供您参考:Web Deploy Parameterization vs Web.config Transform

您还可以使用Replace Tokens任务在部署之前替换web.config文件中的值。