【问题标题】:Namespace documentation on a .Net project (Sandcastle)?.Net 项目(Sandcastle)的命名空间文档?
【发布时间】:2008-10-01 07:32:00
【问题描述】:

前段时间我开始使用Sandcastle 为我们的一个项目生成文档网站。它运行良好,但我们一直只为项目中的类、方法、属性(...)编写文档,并且为整个项目和项目部分/模块/命名空间提供完全独立的文档。如果我可以将这些文档合并在一起并将相应的文档添加到生成的帮助文件中,那就太好了,但我不知道该怎么做。

仅将 cmets 添加到命名空间声明似乎不起作用(C#):

/// <summary>
/// My short namespace description
/// </summary>
namespace MyNamespace { ... }

有人知道怎么做吗?我知道这是有可能的,如果能有... :)

【问题讨论】:

    标签: .net documentation sandcastle


    【解决方案1】:

    Sandcastle 还支持 ndoc 风格的命名空间文档,它允许您将文档粘贴到源文件中:

    只需在要记录的命名空间中创建一个名为 NamespaceDoc 的非公共类,该类的 xml 文档注释将用于命名空间。

    用 [CompilerGenerated] 属性装饰它,以防止类本身出现在文档中。

    例子:

    namespace Some.Test
    {
        /// <summary>
        /// The <see cref="Some.Test"/> namespace contains classes for ....
        /// </summary>
    
        [System.Runtime.CompilerServices.CompilerGenerated]
        class NamespaceDoc
        {
        }
    }
    

    SandCastle 中的工作项位于 here.

    【讨论】:

    • 我更喜欢这个而不是污染配置文件:|在项目中也更加直接可见。
    • 我使用 Visual Studio 的附加功能,所以这是一个真正的祝福。谢谢!
    • 同意@Groxx。我认为这种可见性也适用于 Sandcastle 项目的设置。
    • 这种方法效果很好。我发布了此代码的 VB.Net 版本作为单独的答案,因为在 C# 到 VB 的翻译中存在一个不明显的(至少对我而言)皱纹。
    【解决方案2】:

    如果您使用Sandcastle Help File Builder,则会出现一个对话框来输入命名空间摘要。 (显然也支持定义一个特定的类,但我不喜欢它..)

    来自功能列表:

    项目摘要的定义和 命名空间摘要 cmets 将 出现在帮助文件中。你也可以 轻松指示要使用哪些命名空间 从帮助文件中包含或排除。 还包括支持 通过 a 指定命名空间 cmets 每个内的 NamespaceDoc 类 命名空间。

    【讨论】:

    • 选项在 Project Properties > Comments > NameSpaceSummaries
    • 这实际上在最新版本(当前为 1.9.3.0)中已更改为 Project Properties > Summaries > NameSpaceSummaries。
    • 老话题,但也许对某人有帮助。它也适用于版本 17.1.28.0。感谢您的提示。
    【解决方案3】:

    使用Sandcastle Help File Builder。它允许在 XML 项目文件中指定命名空间描述

    示例:

    <namespaceSummaryItem name="System" isDocumented="True">
        Generic interfaces and helper classes.
    </namespaceSummaryItem>
    

    参考资料:

    .

    【讨论】:

    【解决方案4】:

    我知道这是一篇旧帖子,但这可能对其他人有帮助。

    Following this link,您可以为命名空间设置描述,而无需在项目中添加非公共类。

    要编辑命名空间摘要,请在 SHFB 的“项目属性”选项卡中展开“摘要”部分。您将看到一个名为“NamespaceSummaries”的设置,它最初显示的值是“(None)”。单击设置以将其选中,然后会出现一个显示省略号 (...) 的按钮。单击此按钮可显示命名空间摘要对话框,如下图所示:

    【讨论】:

      【解决方案5】:

      您不能以这种方式添加引用 - 通过 NamespaceDoc.cs 实例来添加

      /// <summary> /// Concrete implementation of see cref="IInterface" using see cref="Concrete"
      /// </summary> class NamespaceDoc { }

      see here

      【讨论】:

        【解决方案6】:

        我看到了“外部 XML 注释文件”的文档。显示如下架构:

        <doc>
            <assembly/>
            <members>
                <member/>
            </members>
        </doc>
        

        如果将其放置在单独的文件中,扩展名是什么 (xml/aml),可以在 Visual Studio 项目中使用吗?

        【讨论】:

          【解决方案7】:

          这是 Tuinstoelen 接受的答案中显示的 C# 代码 sn-p 的 VB.Net 版本。

          我把这个答案留给那些在谷歌上找到这个问题并需要 VB 版本的人,因为如果你尝试直接从 C# 翻译,就会有一个陷阱。

          Namespace Global.TestNamespace
              ''' <summary>
              ''' The <see cref="TestNamespace"/> namespace contains classes for ....
              ''' </summary>
              <System.Runtime.CompilerServices.CompilerGeneratedAttribute()>
              Class NamespaceDoc
              End Class
          End Namespace
          

          注意“全球”。附加到要记录的命名空间。至少对于我的 VB 项目配置,这是必要的,因此命名空间的名称不会嵌套在根命名空间内,而是根命名空间的名称。在我添加“Global.”之前,编译器正在为“TestNamespace.TestNamespace”生成摘要,而不仅仅是“TestNamespace”。鉴于编译器生成的 XML 文件中的信息不正确,SandCastle 无法识别摘要属于正确的命名空间。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-22
            • 1970-01-01
            相关资源
            最近更新 更多