Joh*_*sch 2 .net configuration app-config designer config-designer-csd
我正在使用.NET 的Configuration Section Designer来构建一个简单的ConfigurationElementCollection.它似乎一切都建立得很好,因为子元素与智能感知可见的是自动生成的代码.
不幸的是,即使我在配置部分中向集合添加了元素,它们在运行时也不存在; 它显示集合的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>
Run Code Online (Sandbox Code Playgroud)
ConfigurationSection,a ConfigurationElementCollection和a ConfigurationElement- 没有其他配置元素/部分/组Singleton属性,但单例实例和设置类的实例似乎都不起作用Is Key属性设置为true,所有其他属性都标记为trueIs Required有没有人碰到这个?如果是这样,我必须做出哪些改变才能使其按预期工作?
好吧,我通过将问题指定到特定元素来严重过度复杂化了真正的问题,当事实证明,即使是简单的测试属性ConfigurationSection也不会返回预期的值.我也意识到我无法访问AppSettings,这导致了一个肆虐的线索.
最终的原因?该项目被编译为类库.配置文件仅在应用程序级别可用.由于我使用NUnit来运行测试,因此测试项目中的配置文件覆盖了类库的开发.对于没有陷入ASP.NET领域的开发人员来说,这可能是显而易见的.
通过添加下面configSection的app.config测试项目中:
<section name="customConfigSection" type="ClassLibraryNamespace.SettingsClass, ClassLibraryNamespace"/>
Run Code Online (Sandbox Code Playgroud)
并填写相应的部分,可以按预期访问数据.
希望这可以节省一些小时的调试时间.
| 归档时间: |
|
| 查看次数: |
7452 次 |
| 最近记录: |