C# 并非所有名称空间都包含在Sandcastle build中以供文档使用

C# 并非所有名称空间都包含在Sandcastle build中以供文档使用,c#,sandcastle,C#,Sandcastle,我有一个C#项目,在一个解决方案中有两个名称空间。我已经记录了这两个名称空间中的所有类/函数/成员/等。由于该项目是一个小型研究项目,名称空间是DocTestLibrary和DocTestLibrary.Events。但是,当我试图通过Sandcastle从它创建文档时,它只会为DocTestLibrary名称空间创建文档。我需要在Sandcastle做什么设置才能让这一切顺利进行?不过我对此表示怀疑,因为我已经浏览了其中的大部分 奇怪的是,Doxygen能够很好地生成文档 为了提供更多信息,

我有一个C#项目,在一个解决方案中有两个名称空间。我已经记录了这两个名称空间中的所有类/函数/成员/等。由于该项目是一个小型研究项目,名称空间是
DocTestLibrary
DocTestLibrary.Events
。但是,当我试图通过Sandcastle从它创建文档时,它只会为
DocTestLibrary
名称空间创建文档。我需要在Sandcastle做什么设置才能让这一切顺利进行?不过我对此表示怀疑,因为我已经浏览了其中的大部分

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


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

Warn: ResolveReferenceLinksComponent2: Unknown reference link target 'T:DocTestLibrary.Events.DemoEvent'.
我还发现了一些别的东西

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

  • 测试类
  • 静态助手

顾名思义,StaticHelper是一个只包含静态方法的帮助器类。但Sandcastle也拒绝处理该文件。只处理TestClass。不过,让我感到奇怪的是,日志中没有关于这一点的条目。

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

似乎通过在Sandcastle项目的
可见性
属性部分中设置
文档内部构件
解决了这个问题。我想知道为什么会这样,因为没有代码被声明为内部的


我想我还会玩更多的…

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


现在,我的所有名称空间都列在根名称空间中。

我发现,通过手动设置要在“项目属性”>“可见性”下的“编辑API筛选器”中记录的类,可以解决此问题。

除两个私有字符串外,所有内容都声明为公共。未声明任何内部内容。@ThaMe90:您知道非嵌套类的默认可见性是内部的,而不是公共的,对吗?因此,
class Foo
是一个内部类。这是我不知道C#的默认可见性的一个方面。有人告诉我,在Java中,默认设置是公共的。因为只有公共的、私人的和受保护的。我从来没有想过内部是默认值的可能性。@ThaMe90:在Java中,默认值是“包”访问(不能显式声明),而不是公共的。。。Java和C有着非常不同的规则。基本上,在C#中,默认值总是“您可以声明的最受限制的”-例如,字段在默认情况下是私有的。谢谢你告诉我。:)我对C#的了解大多是自学成才的,而且,你往往会忽略一些重要的方面。