我刚刚推出了一个自定义配置部分,为 Intellisense 创建了一个随附的架构文档,并将其添加到 Web.config 的 Schemas 属性中,按照Michael Stum's answer另一个类似的问题。
不幸的是,可能由于我以有限的知识手动创建 XSD,Intellisense 依赖于指向自定义配置元素中存在的 XSD 文件 namespace 的 xmlns
属性。但是,在运行项目时,我得到一个无法识别的属性“xmlns”。请注意,属性名称区分大小写错误。
我可能只需修改我的 XSD 文件来定义该元素的 xmlns
属性,但是我想知道这是否只是针对更大问题的创可贴修复。我必须承认我对 XML namespace 没有很好的理解,因此这可能是一个让我了解一些事情的机会。
这是我的 XSD 文件根 xs:schema
元素的属性:
<xs:schema id="awesomeConfig"
targetNamespace="http://awesome.com/schemas"
xmlns="http://awesome.com/schemas"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
</xs:schema>
在 Web.config 文件中创建元素时,Visual Studio 2008 会自动附加:
<awesomeConfig xmlns="http://awesome.com/schemas"></awesomeConfig>
那么我是否完全误解了 xs:schema
属性的含义,或者正确的解决方案是否像看起来那么简单?
最佳答案
您的架构需要省略 targetNamespace
属性。实际上,这会将架构内容放入默认命名空间中。
这是必要的,因为 .NET 配置系统从来不允许元素位于命名空间中。
关于.net - 命名空间的自定义配置节问题的智能感知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2986439/