Изменить файл конфигурации на основе констант сборки.
-
02-07-2019 - |
Вопрос
У меня есть приложение, зависящее от некоторых внутренних веб-служб, поэтому мы хотим, чтобы наши конфигурации разработки и промежуточного хранения указывали на серверы разработки и промежуточного хранения веб-служб.
Прямо сейчас это означает ручное редактирование моего файла app.config, чтобы он указывал на соответствующие URL-адреса.Это не только хлопотно, но и подвержено человеческим ошибкам («ой, разве я не удалил этот рабочий URL-адрес?» может вызвать множество проблем).
В небольшом количестве мест кода я использую
#if DEBUG
// do something
#endif
оператор предварительной обработки, и ему было интересно, можно ли сделать что-то подобное для значений в app.config.Мне удалось сделать это с помощью настроек моего приложения, поскольку эти значения доступны в коде.
Я знаю о сценариях после сборки, но кажется, что может быть более простой способ, чем написание процедуры для изменения XML-файла app.config каждый раз, когда я выполняю сборку.Какие-либо предложения?
Это для C# и .NET 3.5 и включает как старые «веб-ссылки», так и новые ссылки на «веб-службы» WCF.
Решение
Мы использовали программу под названием XmlПрепроцессор от SourceForge, чтобы справиться с этим.Он позволяет вам создавать параметры в файлах конфигурации и различные файлы значений для их заполнения.
Учитывая следующие файлы:
app.config
...
<importantSetting>$importantSettingValue$</importantSetting>
...
qavalues.xml
...
<importantSettingValue>QAvalue</importantSettingValue>
...
prodvalues.xml
...
<importantSettingValue>PRODvalue</importantSettingValue>
...
Командная строка, соответствующая следующим строкам, — это все, что необходимо для получения правильных значений в правильных местах.
XmlPreProcess.exe app.config qavalues.xml