Итак, я следовал множеству различных идей / стратегий в многочисленных блогах / сообщениях SO, но мне не удалось найти решение для моей идеи.
Что я использую
- Visual Studio 2017 v15.9.6
- Git (управление исходным кодом)
- CI / CD Azure DevOps
- Служба приложений Azure (для размещения веб-API)
Цель
Цель состоит в том, чтобы использовать инструменты DevOps Azure для фиксации изменений в моем проекте, передать (с помощью Git) изменения в репозиторий DevOps Azure, заставить CI / CD построить проектируемый проект в соответствии справила конвейера для развертывания в dev / production / etc.Все это время держите строки подключения вне контроля исходного кода.
В настоящее время у меня есть веб-сайт (устаревшее веб-приложение), на котором есть определения локальных строк подключения в файле строки внешнего подключения (на основе этой статьи ПодключениеСтроки и файлы конфигурации ).Он размещается как служба приложений в Azure.В моем файле .gitignore
я заставил Git игнорировать определенный файл строк подключения, чтобы он не находился под контролем исходного кода.Используя развертывание Azure из GitHub, сайт обновляется с использованием исходного кода в GitHub. Однако Мне пришлось вручную загружать файл строки подключения с ложными / неверными данными.Я использую настройки приложения Azure для определения самих строк подключения.Этот процесс работает отлично.
Проблема
У меня новый проект .Net Web API, запущенный в .Net Framework 4.7.2.Я также следовал статье, чтобы разделить строки подключения на отдельные файлы, чтобы я мог также игнорировать файл в системе контроля версий.Когда Azure DevOps создает проект, он не может сказать:
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ Web \ Microsoft.Web.Publishing.targets (2603,5): Ошибка: не удалось скопировать файл ConnectionStrings.config в obj \ Release \ Package \ PackageTmp \ ConnectionStrings.config.Не удалось найти файл ConnectionStrings.config.
Очевидно, потому что я не добавляю этот файл в систему контроля версий.Главным образом потому, что даже во время разработки мне нужно указать действительные имена пользователей и пароль в строке подключения.
Вопрос
Какие существуют другие решения / функции, которые могут помочь в реализации этого сценария?