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

Dan*_*ook 5 azure-deployment azure-devops

在Visual Studio Team Services(Visual Studio Online)中,我有三个发布环境,每个环境都有一个Azure Website Deploy步骤.

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

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

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

注意:我意识到可以在Azure门户网站的"所有设置"下为网站指定简单的appsettings和connectionstrings,但我需要做的不仅仅是转换这些简单的设置,并且已经为我的解决方案中的每个环境配置了Web配置转换

Har*_*dhi 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"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

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