我的app.config文件中有一个与我们的IoC容器类相关的自定义部分。在编辑本节的配置文件时,如何获取智能感知,以及摆脱编译器消息,告知我缺少的模式。
我在这里找到了这个问题:app.config configSections custom settings can not find schema information,但我不明白它是否适用于我的问题,以及如果有问题,如何使用答案。
我也找到了这个页面How to get Intellisense for Web.config and App.config in Visual Studio .NET,但它说在运行应用程序之前删除了xmlns属性。这真的是唯一/最好的方式吗?
以下是一个简单文件的示例:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="ServiceContainers"
type="LVK.IoC.RegistrationsSectionHandler, LVK"/>
</configSections>
<ServiceContainers>
<Registration type="DatabaseConnection" class="DatabaseConnection">
<Parameter name="connectionString" type="System.String"
value="TYPE=MSSQL2000;SERVER=localhost;DATABASE=db"/>
</Registration>
</ServiceContainers>
</configuration>
基本上我希望能够在<R
节点内输入<ServiceContainers>
,并在intellisense下拉列表中向我建议注册,以及相应的属性。
答案 0 :(得分:21)
XML Intellisense不会自动适用于自定义配置部分。
Visual Studio可能会报告有关编译的警告,抱怨未定义自定义配置部分的属性。这些警告可能会被忽略。
如果您希望XML IntelliSense支持自定义配置部分(或者您只是希望“找不到架构”警告消失),请在第一个&lt; xs:schema之后立即将以下行添加到DotNetConfig.xsd文件中...&GT; line(通常是DotNetConfig.xsd文件中的第二行)。
<xs:include schemaLocation="YOUR_DIRECTORY\namespace.assemblyname.xsd"/>
DotNetConfig.xsd文件可以在Xml \ Schemas子目录中的Visual Studio 8(或9)安装目录中找到。
答案 1 :(得分:4)
如果您不想修改您的DotNetConfig.xsd,您可以添加xsd配置&#34; inline&#34;。
在您的情况下,将以下属性添加到自定义部分
<ServiceContainers xmlns="your_xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="your_xmlns location_of_your_schema">
<Registration ....
</ServiceContainers>
这在本地测试xsd时很有用,因为 location_of_your_schema 可以是本地路径,当您准备好生产时,将 location_of_your_schema 更改为xsd文件的公共URL。
请注意, xsi:schemaLocation 属性必须包含由空格分隔的字符串对,其中每对中的第一个字符串是名称空间URI,第二个字符串是模式的位置。