自動生成專案的Sandcastle shfbproj

前言

前幾天看到好友阿努的點部落PO了一篇文章,是關於使用Sandcastle Help File Builder 產生 .NET Library 說明文件。後來,有人討論說不知道能不能不需要自己手動加入Sandcastle專案,而自己也覺得Sandcastle不應該加入版控,但又想要有自動化產生文件的功能在CI上,所以就想辦法實作了一下。

Sandcastle shfbproj說明

其實.shfbproj在透過Sandcastle Help File Builder設定產生後,會改變的地方只有

  • DocumentationSources,設定DLL來源的tag
  • 文件格式的相關Tag

.shfbproj

只要先利用Sandcastle Help File Builder設定好文件格式後,再將.shfbproj產出。接著只要稍微修改這一份檔案,就能拿來當成.shfbproj template

shfbproj template

{DocumentationSource}的部分就是每一次產生shfbproj時,要置換成DLL source的部分。

使用SandcastleShfbprojGenerator.exe

利用SandcastleShfbprojGenerator.exe產生Sandcastle專案的.shfbproj,再透過PowerShell的指令來產生元件使用文件。執行SandcastleShfbprojGenerator.exe會掃描專案下的DLL與XML,在動態寫入shfbproj中。

專案資料夾結構 專案資料夾結構

PowerShell指令

<# 產生.NET Library文件 #>
#Sandcastle Help File Builder 根目錄 (請確認執行路徑)
$SHFB_Root_Path = "/property:SHFBROOT=C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder"

#Sandcastle Help File Builder 專案目錄 (請自行調整路徑)
$SHFB_Project_Path = "C:\Users\JamisLiao\Documents\Sandcastle_Test\sandcastleDoc.shfbproj"

#文件站台 (請自行調整路徑)
$Result_WebSite = "C:\Users\JamisLiao\Documents\Sandcastle_Test\Help\index.html"

#執行SandcastleShfbprojGenerator產生Shfbproj
p:\SandcastleShfbprojGenerator.exe -commandType createshfbproj -SourceProjectPath 'C:\Users\JamisLiao\Documents\Sandcastle_Test' -SandcastleTemplatePath P:\Sandcastle\SandcastleDoc\SandcastleDoc.shfbproj -ConfigType Debug -DllFolderName Sandcastle_Test

#執行 (請確認執行路徑)
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe /p:Configuration=Debug $SHFB_Root_Path $SHFB_Project_Path

#刪除Shfbproj
p:\SandcastleShfbprojGenerator.exe -commandType deleteshfbproj -SourceProjectPath 'C:\Users\JamisLiao\Documents\Sandcastle_Test'

文件產生完畢後,會將shfbproj檔刪除。

使用瀏覽器瀏覽使用文件

結論

使用SandcastleShfbprojGenerator.exe確定可以不在需要手動加入Sandcastle專案,之後要將產生文件這一項工作移至CI Server上時,也能夠在Source code從版控Server clone到CI server後,很簡單的透過指令生成Sandcastle shfbproj,並且產生元件的使用文件發布成站台。

SandcastleShfbprojGenerator位置 : Github載點

參考資料

使用Sandcastle Help File Builder 產生 .NET Library 說明文件

免責聲明:

"文章一定有好壞,文章內容有對有錯,使用前應詳閱公開說明書"