.NET 配置部分设计器 - 我的集合在哪里?

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

我正在使用 Configuration Section Designer为 .NET 构建一个简单的 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>

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

最佳答案

好吧,我通过将问题具体化到一个特定的元素而使真正的问题变得过于复杂,结果发现即使是 ConfigurationSection 上的简单测试属性也不会返回预期值。我还意识到我无法访问 AppSettings,这导致了一条严重的线索。

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

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

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

并填写相应的部分,数据就可以正常访问了。

希望这会节省一些调试时间。

关于.NET 配置部分设计器 - 我的集合在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/737946/

相关文章:

c# - 更改 Winforms 中的连接字符串

.net - 如何从 .NET 中的字符串中删除变音符号(重音符号)?

c# - WebRequest.Create 抛出 IOException "The specified registry key does not exist."

java - 如何修复Hibernate 5找不到映射的异常?

xcode - 调试配置文件(.xcconfig)

c# - 如果不存在则创建应用程序配置文件 C#

asp.net-mvc - TFS 构建 2012、ASP.NET MVC 和 MSB3247 : Found conflicts between different versions of same dependent assembly

c# - 如何将 int 或 bool 转换为 checkState

c# - ASP.NET Core 2.0 Web 应用部署和托管

postgresql - 错误检测数据库类型 : Cannot create PoolableConnectionFactory (FATAL: no pg_hba. conf