C# XML 文档“<include>”标记未出现在智能感知中?

C# XML documentation '<include>' tag not appearing in intellisense?

我在 Visual Studio 中开发了一个 C# class 库,并且我一直在使用 XML 文档注释,主要是为了与 Intellisense 集成。然而,大部分评论变得相当混乱,所以现在我正在努力使用 <include> 标签和外部 XML 文档来减少混乱。

我的问题是,当使用 <include> 标签时,Intellisense 似乎没有更新信息,不显示我分配给的任何 <summary><param> 标签我的一些 classes 和方法。

例如,我可以将 class 'Test' 记录为如下所示:

/// <include file="docs.xml" path='extradoc/class[@name="Test"]/*' />
        class Test { string foo = "bar"; }

并且有docs.xml:

<?xml version="1.0" encoding="utf-8" ?>
<extradoc>
  <class name="Test">
    <summary>
      Contains some Foo.
    </summary>
  </class>
</extradoc>

构建后输出 XML 正确填充:

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Example Program</name>
    </assembly>
    <members>
        <member name="T:Example_Program.Program.Test">
            <summary>
      Contains some Foo.
    </summary>
        </member>
    </members>
</doc>

唯一的问题是,尽我所能,在附加我的代码时,此文档不会出现在智能感知框中。是否缺少某些 Visual Studio 配置设置?我已经搜索了 msn 文档,但无济于事。

My issue is that when using the tag Intellisense seems to not update with the information, not show any of the and tags that I've assigned to some of my classes and methods.

1.避免您的问题是无法在当前项目 A 的 Intellisense 中看到 summary

您可以从this document获得帮助,该技术用于提供更好的阅读体验。所以假设你在当前项目 A 中有 Test class,当你在 VS 代码编辑器中看到内容时,你会看到类似:

您不会再在项目 A 中看到那些丰富的评论,这是预期的行为,因为它们已移至 docs.xml

2.如果您的意思是当您创建一个新的项目 B(或将程序集共享给其他开发人员)时,Intellisense 无法识别您的测试 class.

两个可能的原因:

1.The 项目 A 的输出 xx.dll 和 xx.xml 不在同一个文件夹中,因此当您在新项目中引用 xx.dll 时,Intellisense 不会t 显示文档注释。

2.I 猜测您的 docs.xml 文件有问题。 (我找不到任何官方文档表明该技术支持docs.xml中的extradocclass等用户自定义节点,我使用了这两个节点并且Intellisense没有工作,之后将它们更改为正常 docsmembers,现在可以使用了)

尝试以这种方式使用 docs.xmlinclude

<?xml version="1.0" encoding="utf-8" ?>
<docs>
  <members name="MyTests">
    <Test>
      <summary>
        This class is public, but do nothing
      </summary>
      <remarks>
        Just write something here to indicate this is remarks.
      </remarks>
    </Test>
  </members>
</docs>

/// <include file="docs.xml" path='docs/members[@name="MyTests"]/Test/*' />
    public class Test { }

我建议你使用 public class 来测试...之后创建一个新项目并引用 xx.dll,当调用 Test class 可以看到总结:

如果我们F12我们可以看到详细的评论:

希望对您有所帮助:)