什么规则适用于SHFB的IntelliSenseComponent的输出文件夹?

Jon*_*eet 43 .net sandcastle xml-documentation shfb

Noda Time有一个问题,它所提供的XML文档文件也包含了所有内部和私有成员 - 这是一种耻辱.

幸运的是,Sandcastle帮助文件生成器有一个自定义构建组件 - IntelliSenseComponent在理论上它做了正确的事情.不幸的是,我无法弄清楚如何正确配置它.

文档给出了这个例子:

 <output includeNamespaces="false" namespacesFile="Namespaces"
   folder="{@OutputFolder}" />
Run Code Online (Sandbox Code Playgroud)

和州:

上面给出的示例来自Sandcastle帮助文件构建器的配置文件.与其一起使用时,替换标记{@SHFBFolder}和{@OutputFolder}用于在文件路径中插入帮助文件构建器的文件夹和项目的输出文件夹.这些在构建时被替换为适当的值.如果在您自己的构建脚本中使用该组件,请分别将该标记替换为组件程序集和输出文件夹的相对路径或绝对路径.

好吧,我正在使用SHFB,所以我希望它可以工作.但是,除了绝对的工作之路,我无法获得任何其他东西.我试过了:

folder="."
folder="{@OutputFolder}"
folder="{@OutputFolder}XYZZY"
folder="{@OutputFolder}\XYZZY"
folder="{@OutputFolder}/XYZZY"
folder="{@OutputFolder}/XYZZY/"
Run Code Online (Sandbox Code Playgroud)

(我只是使用XYZZY作为易于搜索的东西.)

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

folder="%CD%\XYZZY"
Run Code Online (Sandbox Code Playgroud)

虽然这样做......

folder="%USERPROFILE%\XYZZY"
Run Code Online (Sandbox Code Playgroud)

这有效:

folder="c:\users\jon\test\xyzzy"
Run Code Online (Sandbox Code Playgroud)

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

文档表明所有这一切都应该很简单......我错过了什么?

涉及的版本:

  • SHFB:1.9.3.0
  • Sandcastle:2.6.10621.1

Igo*_*hov 44

我的实验表明,SHFB的IntelliSenseComponent 确实{@OutputFolder}正确对待,但有一个细微差别.

如果在中folder指定了属性

<output includeNamespaces="false" namespacesFile="Namespaces"
        folder="..." />
Run Code Online (Sandbox Code Playgroud)

指向项目文件夹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...
Run Code Online (Sandbox Code Playgroud)

问题是它的默认值与它的值{@OutputFolder}完全相同$(OutputPath),因此如果你{@OutputFolder}\foofolder属性中添加类似的内容,那么foo在构建完成后你将永远不会看到它.

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

<output includeNamespaces="false" namespacesFile="Namespaces"
        folder="{@OutputFolder}\..\distilledApi" />
<!--                            ^^       -->
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.