如何在app.config中获取自定义部分的intellisense?

ang*_*son 31 .net c# configuration app-config custom-sections

我的app.config文件中有一个与我们的Io​​C容器类相关的自定义部分.在编辑本节的配置文件时,如何获取intellisense,以及摆脱编译器消息,通知我缺少的模式.

我在这里找到了这个问题:app.config configSections自定义设置无法找到架构信息,但我不明白它是否适用于我的问题,以及如果有的话如何使用答案.

我还找到了这个页面如何在Visual Studio .NET中获取Web.config和App.config的Intellisense,但它说在运行应用程序之前删除了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>
Run Code Online (Sandbox Code Playgroud)

基本上我希望能够<R<ServiceContainers>节点内输入,并在intellisense下拉列表中向我建议注册,以及它的相应属性.

Ste*_*owe 21

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

Visual Studio可能会报告有关编译的警告,抱怨未定义自定义配置节的属性.这些警告可能会被忽略.

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

<xs:include schemaLocation="YOUR_DIRECTORY\namespace.assemblyname.xsd"/>
Run Code Online (Sandbox Code Playgroud)

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

  • 无论如何要生成"YOUR_DIRECTORY \namespace.assemblyname.xsd"?或者我只需要手动编写它? (3认同)
  • 我有一个更好的解决方案.可能需要VS 2010,不确定:) http://stackoverflow.com/questions/1127315/how-do-i-make-an-extension-xsd-for-the-web-app-config-schema/7977168#7977168 (2认同)