前言
前幾天看到好友阿努的點部落PO了一篇文章,是關於使用Sandcastle Help File Builder 產生 .NET Library 說明文件。後來,有人討論說不知道能不能不需要自己手動加入Sandcastle專案,而自己也覺得Sandcastle不應該加入版控,但又想要有自動化產生文件的功能在CI上,所以就想辦法實作了一下。
Sandcastle shfbproj說明
其實.shfbproj在透過Sandcastle Help File Builder設定產生後,會改變的地方只有
- DocumentationSources,設定DLL來源的tag
- 文件格式的相關Tag
只要先利用Sandcastle Help File Builder設定好文件格式後,再將.shfbproj產出。接著只要稍微修改這一份檔案,就能拿來當成.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,並且產生元件的使用文件發布成站台。
參考資料
使用Sandcastle Help File Builder 產生 .NET Library 說明文件
免責聲明:
"文章一定有好壞,文章內容有對有錯,使用前應詳閱公開說明書"