Конфигурация .Net - Как переопределить настройки и пользовательские разделы в сопоставленном файле конфигурации? - PullRequest
2 голосов
/ 14 марта 2012

Если у меня в файле myprogram.exe.config:

<configuration>
  <configSections>
    <section name="fooSection" type="MyNamespace.MySection, My.Assembly"/>
  </configSections>
  <appSettings>
    <add key="foo" value="bar"/>
  </appSettings>
  <fooSection>
    <bar>
      <add baz="foo bar baz"/>
    </bar>
  </fooSection>
</configuration>

, а у меня в файле overrides.config:

<configuration>
  <configSections>
    <section name="fooSection" type="MyNamespace.MySection, My.Assembly"/>
  </configSections>
  <appSettings>
    <add key="foo" value="BAZ"/>
  </appSettings>
  <fooSection>
    <bar>
      <add baz2="foo foo"/>
    </bar>
  </fooSection>
</configuration>

Есть ли способ прочитать это вбазовая (или загруженная) конфигурация, как вы могли бы получить с приоритетом файла конфигурации machine-> app?(или даже machine.config -> корень машины web.config -> локальное приложение web.config)

В этом примере я бы хотел, чтобы config.AppSettings ["foo"] был "BAZ" и fooSection toсодержат два элемента: "foo bar baz" и "foo foo".

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

MySection section = ConfigurationManager.GetSection("foo") as MySection;

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.LocalUserConfigFilename = // have tried this;
fileMap.ExeConfigFilename = // have tried this
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
ConfigurationManager.RefreshSection("foo");

foo = ConfigurationManager.GetSection("foo") as MySection;
// will only have one item
foo = config.GetSection("foo") as MySection;
// will only have one item

1 Ответ

0 голосов
/ 14 марта 2012

Почему вы хотите это сделать? Мне кажется, что вы пытаетесь разобраться с производственными конфигами? Если это так, то я бы посоветовал посмотреть на преобразования .config. На самом деле Скотт Хансельман написал хороший пост на эту тему

В противном случае, я не верю, что это возможно. Особенно, с гибкостью в конфигурации преобразований.

...