Преобразование 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 перед развертыванием.

Другие вопросы по тегам