31

我们的 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>节点内输入,并在智能感知下拉列表中向我建议注册,以及它的适当属性。

4

2 回答 2

21

XML Intellisense 不会自动用于自定义配置部分。

Visual Studio 可能会在编译时报告警告,抱怨自定义配置部分的属性未定义。这些警告可能会被忽略。

如果您希望 XML IntelliSense 支持自定义配置部分(或者如果您只是希望“找不到架构”警告消失),请在第一个 <xs:schema ...> 之后立即将以下行添加到您的 DotNetConfig.xsd 文件中行(通常是 DotNetConfig.xsd 文件中的第二行)。

<xs:include schemaLocation="YOUR_DIRECTORY\namespace.assemblyname.xsd"/>

DotNetConfig.xsd 文件可以在 Visual Studio 8(或 9)安装目录的 Xml\Schemas 子目录中找到。

于 2008-12-18T15:21:55.363 回答
4

如果您不想修改 DotNetConfig.xsd,您可以添加 xsd 配置“内联”。

在您的情况下,将以下属性添加到自定义部分

<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,第二个字符串是模式的位置。

于 2014-09-10T16:15:54.670 回答