【问题标题】:.NET Configuration Section Designer - Where is my collection?.NET 配置部分设计器 - 我的收藏在哪里?
【发布时间】:2010-10-18 18:52:12
【问题描述】:

我正在使用 .NET 的 Configuration Section Designer 来构建一个简单的 ConfigurationElementCollection似乎一切都构建得很好,并且代码是自动生成的,因为子元素在 Intellisense 中是可见的。

不幸的是,即使我在配置部分向集合中添加了元素,它们在运行时并不存在;它显示集合的 Length 属性为 0 - 即集合是空的,正如您在我的示例 XML 中看到的那样,我已经清楚地将它们放在那里:

示例配置

<logParserSettings xmlns="LogParser">
  <domainControllers>
    <domainController ID="0" name="Local" serverType="Local" enabled="true"/>
    <domainController ID="1" name="DC1" serverType="WindowsServer2003" enabled="false" />
    <domainController ID="2" name="DC2" serverType="WindowsServer2008" enabled="false" />
  </domainControllers>
</logParserSettings>

杂项

  • 在设计器中,我所拥有的就是您在此处看到的,ConfigurationSectionConfigurationElementCollectionConfigurationElement - 没有其他配置元素/部分/组
  • 我不会在运行时添加或删除任何内容
  • 我尝试生成和不生成 Singleton 属性,但单例实例和设置类的实例似乎都不起作用
  • 对于 ID 属性,Is Key 属性设置为 true,对于 Is Required,所有其他属性都标记为 true

有人遇到过这种情况吗?如果是这样,我必须进行哪些更改才能使其按预期工作?

【问题讨论】:

    标签: .net configuration app-config designer config-designer-csd


    【解决方案1】:

    好吧,我通过将问题指定到特定元素来严重过度复杂化真正的问题,结果证明即使ConfigurationSection 上的简单测试属性也不会返回预期值。我也意识到我无法访问AppSettings,这导致了一个肆虐的线索。

    最终原因?该项目被编译为类库。配置文件是only available at the application level。由于我使用 NUnit 运行测试,因此测试项目中的配置文件覆盖了类库的开发文件。这对于任何没有陷入 ASP.NET 领域的开发人员来说可能是显而易见的。

    通过将以下configSection 添加到测试项目中的app.config

    <section name="customConfigSection" type="ClassLibraryNamespace.SettingsClass, ClassLibraryNamespace"/>
    

    并填写相应的section,就可以按预期访问数据了。

    希望这可以节省调试时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多