什么规则适用于SHFB的IntelliSenseComponent的输出文件夹?
野田时间有一个问题反对它,它的XML文档文件包含所有的内部和私人成员也 – 这是一个耻辱。
幸运的是, Sandcastle帮助文件生成器有一个自定义生成组件 – IntelliSenseComponent
– 理论上完成正确的事情…。 不幸的是,我无法弄清楚如何正确configuration它。
文档给出了这个例子:
<output includeNamespaces="false" namespacesFile="Namespaces" folder="{@OutputFolder}" />
并指出:
上面的例子是从Sandcastle帮助文件生成器的configuration文件中获取的。 与它一起使用时,将使用replace标记{@SHFBFolder}和{@OutputFolder}将帮助文件构build器的文件夹和项目的输出文件夹插入到文件path中。 这些在构build时被replace为适当的值。 如果在您自己的构build脚本中使用该组件,请分别用相对或绝对pathreplace组件组件和输出文件夹的标签。
那么,我正在使用SHFB,所以我期望这个工作。 但是,除了绝对的工作path以外,我什么都得不到。 我试过了:
folder="." folder="{@OutputFolder}" folder="{@OutputFolder}XYZZY" folder="{@OutputFolder}\XYZZY" folder="{@OutputFolder}/XYZZY" folder="{@OutputFolder}/XYZZY/"
(我只是使用XYZZY作为一个很容易search的东西。)
看着源代码 ,我希望我可以使用一个环境variables,但是这不起作用:
folder="%CD%\XYZZY"
虽然这样做…
folder="%USERPROFILE%\XYZZY"
这工作:
folder="c:\users\jon\test\xyzzy"
…但我真的不想在那里有一个绝对的path名称。
文件表明,所有这一切应该很容易…我错过了什么?
涉及的版本:
- SHFB:1.9.3.0
- 沙堡:2.6.10621.1
我的实验显示,SHFB的IntelliSenseComponent正确对待了{@OutputFolder}
,但有一个细微之处。
如果在中指定了folder
属性
<output includeNamespaces="false" namespacesFile="Namespaces" folder="..." />
指向项目的OutputPath
文件夹内的一个文件夹(在你的案例中为.\docs\api
),然后SHFB的构build过程创build文件夹,但是在生成网站内容之前删除它:
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)
的值完全相同,因此如果在folder
属性中放置{@OutputFolder}\foo
类的东西,那么您将永远不会看到foo
build立完成。
解决方法很简单:指定一个位于项目输出文件夹之外的文件夹,如下所示:
<output includeNamespaces="false" namespacesFile="Namespaces" folder="{@OutputFolder}\..\distilledApi" /> <!-- ^^ -->
希望这可以帮助。