【问题标题】:Not all namespaces are included into Sandcastle build for documentation并非所有命名空间都包含在 Sandcastle 构建文档中
【发布时间】:2011-10-21 12:55:41
【问题描述】:

我有一个 C# 项目,在一个解决方案中包含两个命名空间。我已经记录了两个命名空间中的所有类/函数/成员/等。由于本项目是一个小型研究项目,命名空间为DocTestLibraryDocTestLibrary.Events。但是,当我尝试通过 Sandcastle 从中创建文档时,它只会为 DocTestLibrary 命名空间创建文档。我需要在 Sandcastle 中进行任何设置来完成这项工作吗?不过我对此表示怀疑,因为我已经浏览了其中的大部分内容。

奇怪的是,Doxygen 能够很好地生成文档。


为了提供更多信息,我检查了 Sandcastle 为构建生成的日志。 似乎此条目导致其余条目不显示。

Warn: ResolveReferenceLinksComponent2: Unknown reference link target 'T:DocTestLibrary.Events.DemoEvent'.

我还发现了一些别的东西。

DocTestLibrary 命名空间由两个类组成:

  • 测试类
  • 静态助手

顾名思义,StaticHelper 是一个只有静态方法的助手类。然而 Sandcastle 也拒绝处理这个文件。只有 TestClass 得到处理。让我感到困惑的是,日志中没有关于此的条目。

【问题讨论】:

    标签: c# sandcastle


    【解决方案1】:

    在我的沙堡项目中,它总是只包含一个总共 5 个命名空间。问题是我没有在 帮助文件部分下检查 包含根命名空间容器 >。

    现在我的所有命名空间都列在根命名空间下。

    【讨论】:

      【解决方案2】:

      DocTestLibrary.Events 中的所有类型都是内部的吗?默认情况下,我相信 Sandcastle 只会为公共类型生成文档。

      【讨论】:

      • 除两个私有字符串外,所有内容都被声明为公开。内部没有任何声明。
      • @ThaMe90:你明白非嵌套类的 default 可见性是内部的,而不是公共的,对吧?所以只是 class Foo 是一个内部类。
      • 这是我不知道 C# 的默认可见性的一个方面。我被告知在 Java 中默认是公开的。因为只有公共的、私人的和受保护的。我从没想过 internal 是默认值的可能性。
      • @ThaMe90:在 Java 中,默认是“包”访问(不能显式声明),而不是公共的……而且 Java 和 C# 有非常不同的规则。基本上在 C# 中,默认值始终是“您可以声明的最受限制的” - 例如,默认情况下字段是私有的。
      • 好吧,我不知道。感谢您填写。:) 我对 C# 的了解主要是自学的,而且,您往往会在这里和那里错过重要的部分。
      【解决方案3】:

      我发现这个问题可以通过手动设置您想要记录在项目属性 -> 可见性下的编辑 API 过滤器中的类来解决。

      【讨论】:

        【解决方案4】:

        似乎可以通过在 Sandcastle 项目的 Visibility 属性部分中设置 DocumentInternals 来解决此问题。我想知道为什么会这样,因为没有代码被声明为内部...

        我想我会再玩一些......

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-22
          • 1970-01-01
          • 1970-01-01
          • 2023-03-29
          • 2011-07-24
          • 2022-11-23
          • 2020-06-26
          • 1970-01-01
          相关资源
          最近更新 更多