在Visual Studio Team Services(Visual Studio Online)中,我有三个发布环境,每个环境都有一个Azure网站部署步骤。
我可以通过指定拾取Web.Uat.config的“BuildConfiguration”变量(例如Uat)来转换构建步骤的web.config。
但是我有多个使用此构建配置的发布环境,它们都需要转换Web配置(例如Dev,Test,Uat,Live)。
是否可以在Azure网站部署步骤之前指定要用于每个版本环境的Web配置转换?
注意:我意识到可以在Azure门户网站的“所有设置”下为网站指定简单的应用程序和连接字符串,但我需要做的不仅仅是转换这些简单的设置,并且已经为每个环境配置了Web配置转换在我的解决方案中
答案 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文件中的值。