我的配置文件为dll或为什么无法解析Section ..?

时间:2012-10-03 09:12:19

标签: c# .net configuration-files

我遇到了一个问题,我无法解析文档标准配置。

例如:

private string GetConfigKey(string param)
        {
            Configuration dllConfig = ConfigurationManager.OpenExeConfiguration(this.GetType().Assembly.Location);
            AppSettingsSection dllConfigAppSettings = (AppSettingsSection)dllConfig.GetSection("appSettings");
            return dllConfigAppSettings.Settings[param].Value;
        }

因此,我从表格中获取文件中的设置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="host" value="mail.ololo.by"/>
  </appSettings>
  <configSections>
      <section name="provideConfig" type="System.Configuration.DictionarySectionHandler"/>
      <section name="provideMailStatus" type="System.Configuration.DictionarySectionHandler" />
  </configSections>
 <provideConfig>
     <add key="post@gate.ololo.by" value="Mail Subject 1"/>
     <add key="guga@gate.ololo.by" value="Mail Subject 2"/>
 </provideConfig>
  <provideMailStatus>
    <add key="status1" value="send"/>
    <add key="status2" value="draft"/>
    <add key="status2" value="other"/>
  </provideMailStatus>
</configuration>

Hashtable hashtable =
                (Hashtable)ConfigurationManager.GetSection("provideConfig");
 foreach (DictionaryEntry dictionaryEntry in hashtable)
            {
                Console.WriteLine(dictionaryEntry.Key+" "+dictionaryEntry.Value);
            }

但不幸的是,configSections有问题。我似乎无法得到它。 MB,我的方向是错误的吗?

P.S。配置文件不能命名为"app.config" - 只能命名项目dll名称

2 个答案:

答案 0 :(得分:2)

配置文件应命名为可执行文件名和“.config”。即使这个可执行文件也使用这个dll文件。 例如:ConSoleApplication.exe使用MyLibrary.dll。然后配置文件必须命名为ConSoleApplication.exe.config

如果您需要配置文件的其他名称,请阅读this

答案 1 :(得分:2)

谢谢大家,我应对了这个问题。 我可以判断某人是否会感兴趣。

Configuration Section Designer Codeplex

.NET Configuration Code Generator

最好的问候,yauhen。