Преобразование web.config для развертывания веб-сайта Azure для каждой среды выпуска
В Visual Studio Team Services (была Visual Studio Online) у меня есть три среды выпуска, каждая с шагом развертывания веб-сайта Azure.
Я могу преобразовать web.config для этапа сборки, указав переменную "BuildConfiguration" (например,Uat), которая выбирает Web.Uat.config.
Однако у меня есть несколько сред выпуска, использующих эту конфигурацию сборки, которые все должны преобразовывать веб-конфигурацию (например, Dev, Test,Uat,Live).
Можно ли указать преобразование веб-конфигурации для использования в каждой среде выпуска перед этапом развертывания веб-сайта Azure?
Примечание. Я понимаю, что простые наборы приложений и строки подключения можно указать на портале Azure в разделе "Все параметры" для веб-сайта, но мне нужно сделать гораздо больше, чем просто преобразовать эти простые параметры, и я уже настроил преобразования веб-конфигурации для каждой среды в моем решении
2 ответа
Задача токенизатора, входящая в состав утилиты Release Management Utility, позволяет преобразовывать файлы конфигурации в зависимости от среды.
Можно использовать один файл конфигурации 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, и задача токенизатора изменит вашу конфигурацию в зависимости от среды, в которой происходит развертывание.
Прочитайте детали по ссылке выше, чтобы узнать больше.
Web.config преобразуется в процессе сборки, если вы сгенерировали пакет развертывания из "Build", а затем развернули его в "Release", то вы не сможете преобразовать его перед развертыванием.
Вы можете использовать Web Deploy Parameterization для обновления значений в web.config перед развертыванием. Дополнительная информация для справки: Параметризация веб-развертывания или преобразование Web.config.
Также вы можете использовать задачу " Заменить токены", чтобы заменить значения в файле web.config перед развертыванием.