如何在C#父类/接口和子类之间同步XML注释

时间:2014-03-21 12:17:38

标签: c# .net visual-studio documentation xml-documentation

在Java中,如果我在父类或接口上有一个Javadoc,那么当我将鼠标悬停在子类名上时,Javadoc将出现在大多数IDE中的子类或接口的上下文中。但是,在使用C#的XML注释的Visual Studio中,这似乎并非如此。有没有办法在父类和子类之间自动同步XML注释,所以我不必复制/粘贴它们并手动同步它们?

3 个答案:

答案 0 :(得分:3)

如果您要创建其他项目将使用的库,那么您可以使用Sandcastle帮助文件构建器(SHFB)<inheritdoc>标记。虽然Visual Studio本身不了解此标记,但SHFB提供了一个IntelliSense Component来读取项目生成的XML文档文件,并写出一个新的XML文档文件,其中所有<inheritdoc>标记都替换为继承的文档。这正是我们用于在NuGet上发布openstack.net SDK的XML文档的过程:

  1. Create XML documentation during the build.

    enter image description here

  2. Include the IntelliSense Component in our SHFB project.

    Configure IntelliSense Component

  3. 创建一个explicitly references the XML documentation created by the IntelliSense Component的.nuspec文件(NuGet包规范),而不是C#编译器创建的文档。

  4. 在Visual Studio中,能够查看基类的文档也是有益的。我使用Inheritance Margin扩展从覆盖或实现方法跳转到完全记录的基类或接口。

答案 1 :(得分:2)

Visual Studio并不提供开箱即用的功能。没有办法让它们保持同步,或者使派生类型继承XML文档。

但是如果您安装了Resharper,它将为您提供将基本类型的XML注释复制到派生类型的选项。

enter image description here

答案 2 :(得分:2)

我构建了一个工具来对XML文档文件进行后期处理,以添加对&lt; inheritdoc /&gt;的支持。标签。

虽然它对源代码中的Intellisense没有帮助,但它确实允许修改后的XML文档文件包含在NuGet包中,因此可以在引用的NuGet包中使用Intellisense。

请访问www.inheritdoc.io(免费版)。