【发布时间】:2008-11-22 13:53:14
【问题描述】:
NDoc 有一个 XML 元素 inheritdoc,它允许您从父类(或实现的接口)继承成员的文档。但是,Visual Studio(即 C# 编译器)不理解此标记并抱怨文档不存在或不完整。 StyleCop 和其他一些工具也是如此。有替代方法吗?您如何在不重复 XML 描述的情况下保持文档完整?
【问题讨论】:
标签: .net documentation ndoc
NDoc 有一个 XML 元素 inheritdoc,它允许您从父类(或实现的接口)继承成员的文档。但是,Visual Studio(即 C# 编译器)不理解此标记并抱怨文档不存在或不完整。 StyleCop 和其他一些工具也是如此。有替代方法吗?您如何在不重复 XML 描述的情况下保持文档完整?
【问题讨论】:
标签: .net documentation ndoc
我有一个更好的答案:FiXml。
使用 GhostDoc 克隆 cmets 确实是可行的方法,但它有明显的缺点,例如:
FiXml 的简短描述:它是由 C#\Visual Basic .Net 生成的 XML 文档的后处理器。它是作为 MSBuild 任务实现的,因此很容易将其集成到任何项目中。它解决了一些与用这些语言编写 XML 文档相关的烦人案例:
<see cref="Instance" />属性来获取它的唯一实例”,甚至是“初始化一个@的新实例” 987654327@上课。”为解决上述问题,提供了以下附加 XML 标记:
<inheritdoc />, <inherited />标签<see/> 标签中的<see cref="..." copy="..." /> 属性。这里是its web page 和download page(链接断开)。
最后,Sandcastle中有<inheritdoc>标签——使用它肯定比复制XML cmets要好,但与FiXml相比它几乎没有缺点:
.xml 文件
包含提取的 XML cmets。但是这些文件被许多工具使用,
包括 .NET Reflector 和类浏览器\Visual Studio .NET 中的 IntelliSense。
因此,如果您只使用 Sandcastle,您将看不到继承的文档。<see ... copy="true" />。【讨论】:
AppDomain 中,而不是创建一个单独的 AppDomain 以便以后卸载。这可能就是原因。
另一种方法是使用GhostDoc - Visual Studio 的一个插件,它会自动为您生成 cmets。这当然会重复 XML 描述,这是您要避免的部分内容 - 但至少它会自动为您完成。
如果您只为被继承的方法或覆盖接口方法而完全放弃文档会发生什么?我怀疑这取决于您如何配置 NDoc,但肯定在 MSDN 文档中似乎只是自然地继承了文档 - 并且快速检查 suggests 当您不提供时 VS 不会抱怨继承方法的文档。当然值得一试。
【讨论】:
我构建了一个命令行工具来对 XML 文档文件进行后处理,以添加对
它对源代码中的 Intellisense 没有帮助,但它允许将修改后的 XML 文档文件包含在 NuGet 包中,因此可以在引用的 NuGet 包中与 Intellisense 一起使用。
详情请参阅www.inheritdoc.io(提供免费版本)。
【讨论】: