Лучший подход для настройки нескольких приложений .Net - PullRequest
4 голосов
/ 19 сентября 2008

У нас есть набор связанных приложений .Net 3.5. Некоторые из них - веб-сайты, некоторые - веб-службы, а некоторые - приложения Windows. Каждое приложение в настоящее время имеет свой собственный файл конфигурации (app.config или web.config), и в настоящее время в файлах конфигурации есть несколько дублирующих ключей (которые в данный момент синхронизируются вручную), поскольку для нескольких приложений требуется одинаковое значение конфигурации. Кроме того, этот набор приложений развертывается в различных средах (dev, test, live и т. Д.)

Каков наилучший подход к управлению конфигурацией этих нескольких приложений из одного источника конфигурации, чтобы при необходимости значения конфигурации могли быть разделены между несколькими приложениями? Мы также хотели бы иметь отдельные конфиги для каждой среды (поэтому при развертывании вам не нужно вручную изменять определенные значения конфигурации, которые являются специфичными для среды, такие как соединительные строки), но в то же время не хотите поддерживать несколько больших конфигураций файлы (по одному для каждой среды), поскольку их синхронизация при добавлении новых ключей конфигурации окажется проблематичной.

Ответы [ 5 ]

7 голосов
/ 19 сентября 2008

Visual Studio имеет относительно непонятную функцию, которая позволяет добавлять существующие элементы в виде ссылок, что должно выполнить то, что вы ищете. Прочтите пост Дерика Уиттакера на эту тему для более подробной информации.

Visual Studio действительно должна сделать эту опцию более заметной. Никто на самом деле не думает нажимать на эту маленькую стрелочку рядом с кнопкой «Добавить».

3 голосов
/ 19 сентября 2008

Вы можете разбить App.config на несколько файлов конфигурации. Вы просто указываете имя файла, который содержит раздел конфигурации.

Изменить app.config:

<SomeConfigSection>
  <SettingA/>
  <SettingB/>
</SomeConfigSection>
<OtherSection>
  <SettingX/>
</OtherSection>

В app.config и SomeSetting.xml:

<SomeConfigSection file="SomeSetting.xml" />
<OtherSection file="Other.xml" />

Где SomeSetting.xml содержит:

Теперь вы можете создавать свой app.config из разных файлов разделов с помощью какого-либо сценария сборки или развертывания. E.g.:

if debug copy SomeSettingDebug.xml deploydir/SomeSetting.xml
if MySql copy OtherSectionMySql.xml deploydir/OtherSetting.xml
1 голос
/ 19 сентября 2008
1 голос
/ 19 сентября 2008

Мы используем шаблоны файлов, такие как MyApp.config.template и MyWeb.config.template со свойствами NAnt для битов, которые различны в разных средах. Таким образом, файл шаблона может выглядеть примерно так:

<MyAppConfig>
    <DbConnString>${DbConnString}</DbConnString>
    <WebServiceUri uri="${WebServiceUri}" />
</MyAppConfig>

Во время сборки мы генерируем все конфиги для разных сред, просто просматривая каждую среду в сценарии NAnt, изменяя значение свойств NAnt $ {DbConnString} и $ {WebServiceUri} для каждой среды (фактически это все устанавливается в один файл с разделами для каждой среды) и делает копию NAnt с включенной возможностью расширения свойств.

Потребовалось немного времени для настройки, но это окупило нас, по крайней мере, в десять раз за сэкономленное время, затрачиваемое на разные версии конфигурационных файлов.

0 голосов
/ 19 сентября 2008

Проверьте структуру призмы из группы моделей и практик Microsoft?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...