2012-02-15 56 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" /> 
<!--       ^^  --> 

希望這有助於。

相關問題