У меня есть приложение для Windows, разработанное на C#, которое имеет 3 файла конфигурации, а именно dev.config, qa.config и prod.config.
В моем основном файле app.config я написал что-то вроде этого:
И когда мне приходится развертывать в другой среде, я редактирую файл app.config из двоичных файлов, меняю его на соответствующий файл конфигурации и развертываю его (скопируйте и вставьте двоичные файлы в виртуальной машине).
Чтобы автоматизировать это, я сначала добавил событие предварительной сборки, которое заменяет полный файл app.config соответствующим файлом среды с помощью xcopy, как указано в разделе этот ответ. Проблема в том, что мне пришлось собирать код 3 раза для развертывания в 3 разных средах.
MSBuild.exe "C:\test\TestProject.sln" /t:Rebuild /p:Configuration=dev
MSBuild.exe "C:\test\TestProject.sln" /t:Rebuild /p:Configuration=qa
MSBuild.exe "C:\test\TestProject.sln" /t:Rebuild /p:Configuration=prod
При этом создаются 3 двоичных файла отдельно в 3 разных папках dev, qa, prod в папке bin.Я также читал о медленном гепарде, который тоже делает нечто подобное. Мне приходится снова и снова собирать код для разных сред на основе Configuration Manager.
Я не знаю, возможно ли это, но мне нужно собирать только один раз и развертываю одни и те же двоичные файлы в разных средах. На сервере, где бы я ни развертывал, у меня будет установлена переменная системной среды, например:
environmentType = dev or qa or prod
И где-то в коде я должен прочитать переменную среды
System.Environment.GetEnvironmentVariable("environmentType")
и сопоставьте его с соответствующим файлом конфигурации. Короче говоря, не должно быть какого-либо ручного вмешательства для изменения чего-либо или не следует выполнять сборку несколько раз.
Или есть ли способ прочитать переменную среды в app.config
Или есть ли способ прочитать переменную среды в app.config
code> и написать что-то вроде этого?
if env = "dev"
else if env ="qa"
else
Подробнее здесь: https://stackoverflow.com/questions/533 ... thout-buil
Измените соответствующий файл конфигурации на основе переменной среды без многократной сборки приложения. ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение