Свойства ConfigurationSectionGroup.Sections всегда пусты

Это простое приложение Windows Forms, один экран и ничего более. Я создал свой собственный обработчик ConfigurationSection

Сборка RemoteFactoryManager.Utils.dll

public class EnvironmentSection : ConfigurationSection
{
    public EnvironmentSection() { }

    public EnvironmentSection(  string description,
                                        string path,
                                        string selected)
    {
        this.Description = description;
        this.Path = path;
        this.Selected = selected;
    }

    [ConfigurationProperty("description", IsRequired = true)]
    public string Description
    {
        get { return this["description"] as string; }
        set { this["description"] = value; } 
    }

    [ConfigurationProperty("path", IsRequired = true)]
    public string Path
    {
        get { return this["path"] as string; }
        set { this["path"] = value; }
    }

    [ConfigurationProperty("selected", IsRequired = false)]
    public string Selected
    {
        get { return this["selected"] as string; }
        set { this["selected"] = value; }
    }
}

Это мой app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="Environments">
      <section name="DEV"  type="RemoteFactoryManager.Utils.EnvironmentSection, RemoteFactoryManager.Utils" />
      <section name="DEV1" type="RemoteFactoryManager.Utils.EnvironmentSection, RemoteFactoryManager.Utils" />
      <section name="DEV2" type="RemoteFactoryManager.Utils.EnvironmentSection, RemoteFactoryManager.Utils" />
    </sectionGroup>
  </configSections>
  <Enviroments>
    <DEV  description="Development"  path="\\SomeServer\C$\somepath" selected="1" />
    <UAT1 description="Devlpmnt - 1" path="\\SomeServer1\C$\somepath" />
    <UAT2 description="Devlpmnt - 2" path="\\SomeServer2\C$\somepath" />
  </Enviroments>
</configuration>

Все еще в сборке RemoteFactoryManager.Utils.dll

public class ConfigReader
{
    private List<Env.Environment> _env;
    public List<Env.Environment> Environments { get { return _env; } }

    public void LoadEnvironments()
    {
        Configuration oConfiguration = ConfigurationManager.OpenExeConfiguration(
            ConfigurationUserLevel.None);

        ConfigurationSectionGroup oSectionGroup = 
            oConfiguration.GetSectionGroup("Environments") as 
                ConfigurationSectionGroup;

        if (oSectionGroup != null)
        {
            _env = new List<Env.Environment>();
            foreach (EnvironmentSection oSection in oSectionGroup.Sections)
            {
                Env.Environment e = new Env.Environment();
                e.Description = oSection.Description; // always empty
                e.Path = oSection.Path;               // always empty
                e.Selected = oSection.Selected;       // always empty
                _env.Add(e);
            }

        }
    }

.Exe код

 private void frmMain_Load(object sender, EventArgs e)
    {
        ConfigReader c = new ConfigReader();
        c.LoadEnvironments();
    }

Моя проблема

oSection.Description, oSection.Path и oSection.Selected всегда пустые.

Что я делаю неправильно? Раньше это нормально работало в другом проекте. Разница лишь в том, что теперь файл app.config принадлежит.exe, а код, который обрабатывает разделы, находится в другой отдельной сборке.

0 ответов

Другие вопросы по тегам