【问题标题】:C# XML documentation '<include>' tag not appearing in intellisense?C# XML 文档“<include>”标签没有出现在智能感知中?
【发布时间】:2020-02-18 16:31:48
【问题描述】:

我在 Visual Studio 中开发了一个 C# 类库,并且我一直在使用 XML 文档注释,主要是为了将它们与 Intellisense 集成。但是,大部分 cmets 已经变得非常混乱,所以现在我正在努力使用&lt;include&gt; 标记和外部 XML 文档来减少混乱。

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

例如,我可以记录一个类“测试”,如下所示:

/// <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 文档无济于事。

【问题讨论】:

  • 不确定这是否有帮助 - 但通常重新启动 VS 并删除用户选项文件在过去对我有帮助,尽管在我的情况下这只是一般的智能感知。
  • this documentation will not appear in the intellisense boxes while appending my code有点困惑,你的意思是当你在另一个项目中引用这个程序集时,那个项目中的智能感知无法识别你的程序集的文档?

标签: c# xml visual-studio comments intellisense


【解决方案1】:

我的问题是,当使用标签 Intellisense 似乎 不更新信息,不显示任何和 我分配给我的一些类和方法的标签。

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

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

您不会再看到项目 A 中的富 cmets 是预期行为,因为它们已被移至 docs.xml

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

两种可能的原因:

1.项目A的输出xx.dll和xx.xml不在同一个文件夹,所以当你在新项目中引用那个xx.dll时,Intellisense不会显示文档cmets。

2.我猜你的docs.xml 文件有问题。 (我在docs.xml中找不到任何官方文档表明该技术支持用户定义的节点,如extradocclass,我使用这两个节点并且Intellisense无法正常工作,将它们更改为正常@987654336 @ 和 members,现在可以使用了)

尝试以这种方式使用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 { }

我建议你使用公共类来测试...然后新建一个项目并引用那个xx.dll,调用Test类时可以看到摘要:

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

希望对你有帮助:)

【讨论】:

猜你喜欢
  • 2011-04-01
  • 2011-01-13
  • 2011-01-28
  • 2017-05-25
  • 1970-01-01
  • 2019-01-24
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多