我正在使用配置部分设计器 http://csd.codeplex.com/为.NET构建一个简单的ConfigurationElementCollection
. It appears一切都构建得很好,并且代码是自动生成的,因为子元素通过 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>
各种各样的
- 在设计师中,我所拥有的就是你在这里看到的,
ConfigurationSection
, a ConfigurationElementCollection
, and a ConfigurationElement
- 没有额外的配置元素/部分/组
- 我没有在运行时添加或删除任何内容
- 我尝试过生成和不生成
Singleton
属性,但单例实例和设置类的实例似乎都不起作用
- 对于 ID 属性,
Is Key
属性设置为 true,所有其他属性都标记为 trueIs Required
有人遇到过这个吗?如果是这样,我需要做出什么改变才能使其按预期工作?
好吧,我通过将问题指定为特定元素,使真正的问题变得过于复杂,而事实证明,甚至连一个简单的测试属性都没有ConfigurationSection
将返回一个预期值。我也发现我无法访问AppSettings
,这导致了一条激烈的线索。
最终原因是?该项目被编译为类库。配置文件是。由于我使用 NUnit 来运行测试,因此测试项目中的配置文件会覆盖类库的开发文件。这对于任何没有陷入 ASP.NET 领域的开发人员来说可能是显而易见的。
通过添加以下内容configSection
to the app.config
在测试项目中:
<section name="customConfigSection" type="ClassLibraryNamespace.SettingsClass, ClassLibraryNamespace"/>
填写相应的部分,就可以正常访问数据了。
希望这能节省一些时间的调试时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)