什么规则适用于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类的东西,那么您将永远不会看到foobuild立完成。

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

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

希望这可以帮助。