NameValueCollection to ConfigurationSection - PullRequest
       43

NameValueCollection to ConfigurationSection

0 голосов
/ 07 февраля 2019

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

<configuration>
  <configSections>
    <section name="applicationConfiguration" type="System.Configuration.NameValueSectionHandler" />
    <section name="databaseConfiguration" type="System.Configuration.NameValueSectionHandler" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>

  <ApplicationConfiguration/>

  <DatabaseConfiguration>
    <add key="UserID" value="user"/>
    <add key="Password" value="pwd"/>
  </DatabaseConfiguration>

</configuration>

Он отлично работает в моем проекте, но проблема с project.test.Я пытаюсь скопировать app.config в тестовом проекте (и в свойствах выбрать «всегда копировать»), но это ничего не меняет.Файл App.config существует в Bin / Debug тестового проекта, но для теста он не существует.

Поэтому я попытался добавить элементы в App.config на лету.Это работает хорошо, добавляя новый ключ в раздел AppSettings в Configuration Manager:

ConfigurationManager.AppSettings.Set("UserID ", " user ");

Но я застрял, когда хочу использовать разделы;Я не могу добавить раздел на лету в ConfigurationManager.Вот где я:

System.Configuration.Configuration tempConfig = (System.Configuration.Configuration) ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                dbConfig = new NameValueCollection();
                dbConfig.Add("UserID ", "user");
                dbConfig.Add("Password ", "pwd");
                tempConfig.Sections.Add("DatabaseConfiguration ", (ConfigurationSection) dbConfig);

У вас, ребята, есть идеи, как решить эту проблему?

Заранее спасибо!

...