2016-05-16 41 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