2012-02-15 61 views
42

Noda Time有一个issue反对它,它的XML文档文件包含所有的内部和私人成员也 - 这是一个耻辱。什么规则适用于SHFB的IntelliSenseComponent的输出文件夹?

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

文档给出了这样的例子:

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

,并指出:

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

嗯,我上午使用 SHFB,所以我期望的工作。但是,除了绝对路径以外,我无法获得什么。我已经试过:

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

(我只是用XYZZY的东西,很容易搜索)

望着source code,我希望我可以使用一个环境变量,但这并不工作:

folder="%CD%\XYZZY" 

虽然这没有...

folder="%USERPROFILE%\XYZZY" 

这个工程:

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

......但我真的不希望有一个绝对的路径名。

该文件表明,所有这些应该很容易......我错过了什么?

版本涉及:

  • SHFB:1.9.3.0
  • 沙堡:2.6.10621.1
+0

'folder =“%CD%\ XYZZY”'不起作用,因为'%CD%'没有被IntelliSenseComponent使用的'Environment.ExpandEnvironmentVariables'扩展。我相信它可以通过'cmd.exe'扩展(就像%TIME%,%CMDCMDLINE%等一样) – 2012-02-17 13:43:37

回答

44

我的实验表明,SHFB的IntelliSenseComponent 治疗{@OutputFolder}正确的,但有一个细微差别。

如果

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

点指定的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)的值完全相同,因此如果您在folder属性中添加了类似{@OutputFolder}\foo的内容,则在构建完成后,您永远不会看到foo

解决方法很简单:指定位于外项目的输出文件夹的,像这样的文件夹:

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

希望这有助于。

相关问题