Подтвердить что ты не робот

ConfigSource не работает в system.serviceModel * или * его подразделах

Я пытаюсь разбить файл app.config на несколько файлов, чтобы упростить управление различиями, необходимыми для разных сред. С некоторыми разделами было легко...

<system.diagnostics>
    various stuff
</system.diagnostics>

стал

<system.diagnostics configSource="ConfigFiles\system.diagnostics.dev" />

с "различным материалом", перемещенным в файл system.diagnostics.dev.

Но для раздела system.serviceModel это, похоже, не работает.

Теперь я прочитал предложения о том, что он не работает для system.serviceModel сам, но он работает для разделов под ним: bindings, client, diagnostics и т.д. Но то же самое происходит с мне, когда я пытаюсь использовать configSource с одним из них. Когда я помещаю

<system.serviceModel>
  <bindings configSource="ConfigFiles\whateverFile.dev" />

Я получаю:

Атрибут 'configSource' не объявлен.

Кто-нибудь еще видел это? Знаете ли вы решение? (Возможно, у меня устаревшая схема или что-то еще?)

4b9b3361

Ответ 1

Редактор VS.NET стонет о конфигурации, но он работает.

У меня такая конфигурация...

<system.serviceModel>
  <behaviors configSource="config\system.servicemodel.behaviors.config" />
  <bindings configSource="config\system.servicemodel.bindings.config" />
  <client configSource="config\system.servicemodel.client.config" />
</system.serviceModel>

... который отлично работает.

Ответ 2

Он будет НЕ работать с <system.serviceModel>, так как конфигурация SectionGroup - не раздел конфигурации.

Он WILL работает нормально во время выполнения на чем-либо ниже <system.serviceModel> - мы делаем это все время. Ответ Мартина показывает это хорошо - его образец будет работать.

Ответ 3

Одна вещь, о которой нужно знать при перемещении разделов конфигурации в отдельные файлы: убедитесь, что ваш отдельный файл конфигурации НЕ содержит атрибут configSource. Например, если вы разделили свой раздел привязок так,

<system.serviceModel>
    <bindings configSource="yourConfigFile.config" />
</system.serviceModel>

убедитесь, что ваш фактический файл привязок не содержит атрибут "configSource":

<?xml version="1.0" encoding="utf-8"?>
<bindings>
    <!-- binding configuration stuff -->
</bindings>

Я знаю, что это может показаться очевидным, но если вы введете атрибут configSource, затем вырезаете и вставляете в новый файл, легко забыть извлечь атрибут.

Надеюсь, что это поможет.