2016-05-16 43 views
3

在Visual Studio Team Services(是Visual Studio Online)中,我有三个发布环境,每个发布环境都有一个Azure网站部署步骤。为每个发行环境转换web.config for Azure网站部署

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

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

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

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

回答

5

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

可以使用包含所有环境的所有配置的单个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文件和标记生成器任务配置会修改你的配置取决于在其上部署是怎么回事环境。

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

1

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

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

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

+0

替换令牌可以找到并替换文本吗? – alltej