如何在 app.config 中为自定义部分获取智能感知?

Posted

技术标签:

【中文标题】如何在 app.config 中为自定义部分获取智能感知?【英文标题】:How do I get intellisense in app.config for a custom section? 【发布时间】:2010-09-27 13:05:43 【问题描述】:

我的 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>

基本上,我希望能够在&lt;ServiceContainers&gt; 节点内输入&lt;R,并在智能感知下拉列表中获得向我建议的注册,以及它的适当属性。

【问题讨论】:

【参考方案1】:

如果您不想修改 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,第二个字符串是模式的位置。

【讨论】:

嗨,我知道这是一年前的事了。我试过这个,但是当我运行我的应用程序时我得到Unrecognized attribute 'xmlns:xsi'. Note that attribute names are case-sensitive.。如果我删除您提到的属性,我的应用程序将运行,但随后我失去了 Intellisense。你知道它为什么会导致运行时错误吗?谢谢,提前【参考方案2】:

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

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

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

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

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

【讨论】:

+1。当涉及到自定义配置部分时,模式经常被忽略。当您的管理员或 co-lo 必须对您的 app.config 或 web.config 进行更改时,它们非常有用。 我有一个更好的解决方案。可能需要 VS 2010,不确定:) ***.com/questions/1127315/… 是否有生成“YOUR_DIRECTORY\namespace.assemblyname.xsd”的方法?还是我只需要手动编写? 为应该存在的功能编辑单个开发机器设置是疯狂的。已经有一个工具可以从自定义配置节类型 (ookii.org/Software/ConfigurationDocumentationGenerator) 生成 XSD 文档,根据这个答案:***.com/a/7681132/88409,您可以简单地将 XSD 包含在您的解决方案中,然后用相应的 xmlns 标记您的节元素属性。 @Triynko:我同意,这太疯狂了。请注意,这个答案来自 2008 年。我希望现在有更好的解决方案 :)

以上是关于如何在 app.config 中为自定义部分获取智能感知?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中为自定义 DataTemplateSelector 获取 DataTemplate 的 x:DataType

如何在 EF Core 5 中为自定义 SQL 配置导航属性

如何在 Visual Studio 中为自定义配置文件添加配置转换?

如何在android中为自定义视图创建setter和getter

如何在 WooCommerce 中为自定义产品数据选项卡定义图标

如何在 JavaScript 中为自定义对象创建方法?