首页 文章

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

提问于
浏览
4

在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门户网站的“所有设置”下为网站指定简单的应用程序和连接字符串,但我需要做的不仅仅是转换这些简单的设置,并且已经为我的解决方案中的每个环境配置了Web配置转换

2 回答

  • 1

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

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

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

  • 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任务将根据部署的环境修改您的配置 .

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

相关问题