У нас есть решение C # ASP.MVC, созданное из множества отдельных проектов, которое поддерживает несколько конфигураций решения. Каждая конфигурация имеет место, поскольку для каждой среды требуются разные настройки, и при этом используется одна и та же база кода.
Настройки хранятся в нескольких .config
файлах, а настройки среды применяются с использованием файлов преобразования.
Например, у нас есть Logging.config файл, расположенный в проекте Logging , в котором хранятся настройки Logger и соответствующие файлы преобразования. В Solution Explorer это выглядит примерно так:
- Logging.config
- Logging.Dev.config
- Logging.UAT.config
- Logging.Prod.config
- и т.д ...
Мы создаем пакет сборки с помощью Azure DevOps Pipelines, однако мы вынуждены перестраивать проект несколько раз, даже если на кодовую базу это не влияет, поэтому мы ищем способ оптимизации процесса, который в идеале должен выглядеть примерно так:
- Код сборки в режиме Release
- Публикация конфигураций с настройками Dev
- Публикация конфигураций, преобразованных с настройками UAT
- Публикация конфигураций с настройками Prod
- и т.д ....
Преимущество заключается в том, что мы можем развертывать один и тот же код в каждой среде и применять соответствующие конфиги в верхней части каталога веб-сайта.
Как этого достичь?