45

Noda Time有一个问题,即它发布的 XML 文档文件也包含所有内部和私有成员 - 这是一种耻辱。

幸运的是,Sandcastle Help File Builder有一个自定义的构建组件——IntelliSenseComponent理论上它确实做了正确的事情。不幸的是,我无法弄清楚如何正确配置它。

文档给出了这个例子:

 <output includeNamespaces="false" namespacesFile="Namespaces"
   folder="{@OutputFolder}" />

并指出:

上面给出的示例取自 Sandcastle Help File Builder 的配置文件。与它一起使用时,替换标签 {@SHBFFolder} 和 {@OutputFolder} 用于在文件路径中插入帮助文件构建器的文件夹和项目的输出文件夹。这些在构建时被替换为适当的值。如果在您自己的构建脚本中使用该组件,请将标签分别替换为组件装配和输出文件夹的相对或绝对路径。

好吧,我正在使用 SHFB,所以我希望它能够工作。但是,除了绝对的工作路径之外,我什么也得不到。我试过了:

folder="."
folder="{@OutputFolder}"
folder="{@OutputFolder}XYZZY"
folder="{@OutputFolder}\XYZZY"
folder="{@OutputFolder}/XYZZY"
folder="{@OutputFolder}/XYZZY/"

(我只是将 XYZZY 用作易于搜索的东西。)

查看源代码,我希望我可以使用环境变量,但这不起作用:

folder="%CD%\XYZZY"

虽然这确实......

folder="%USERPROFILE%\XYZZY"

这有效:

folder="c:\users\jon\test\xyzzy"

...但我真的不想要一个绝对路径名。

文档表明所有这些都应该非常容易......我错过了什么?

涉及的版本:

  • SHFB:1.9.3.0
  • 沙堡:2.6.10621.1
4

1 回答 1

44

我的实验表明,SHFB 的 IntelliSenseComponent确实可以正确处理{@OutputFolder},但存在细微差别。

如果folder指定的属性在

<output includeNamespaces="false" namespacesFile="Namespaces"
        folder="..." />

指向项目文件夹OutputPath文件夹(.\docs\api在您的情况下),然后 SHFB 的构建过程会创建该文件夹,然后在生成网站内容之前将其删除:

Last step completed in 00:00:34.5875
-------------------------------
Combining conceptual and API intermediate TOC files...

Clearing any prior web output
    Last step completed in 00:00:00.2360
-------------------------------
Extracting HTML info for HTML Help 1 and/or website...

问题是 的默认值与 的值{@OutputFolder}完全相同$(OutputPath),因此如果您{@OutputFolder}\foo在属性中放置类似的内容,那么构建完成后folder您将永远看不到。foo

解决方案很简单:指定一个位于项目输出文件夹之外的文件夹,如下所示:

<output includeNamespaces="false" namespacesFile="Namespaces"
        folder="{@OutputFolder}\..\distilledApi" />
<!--                            ^^       -->

希望这可以帮助。

于 2012-02-17T13:26:51.957 回答