Изменить файл конфигурации на основе констант сборки.

StackOverflow https://stackoverflow.com/questions/128513

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top