關(guān)于Sandcastle網(wǎng)上的參考資料相對較少,Google出來很多資料都是全英文的,相對于我這種英語渣渣看起來還是很費勁的。
言簡意賅,Sandcastle主要功能是能夠?qū)#類生成類似MSDN風(fēng)格幫助文檔的工具,支持本地化,并提供一個基本的命令行編譯器界面和一個Visual Studio插件。
優(yōu)點:
1.生成簡單,工作量小,幾分鐘之內(nèi)就能完成一個項目的api文檔制作。
2.自動生成索引項、內(nèi)容項目表、主題塊和頁面布局,提高一致性和熟悉程度。
3.代碼高亮,易讀性強
4.生成api界面美觀。
缺點:
只支持visual studio,意思是只支持微軟旗下產(chǎn)品。
我是在github中下載的sandcastle,鏈接隧道 https://github.com/EWSoftware/SHFB/releases,下載時需注意版本號,我沒有看版本備注就直接下載了最新版本的sandcastle,安裝后生成api后直接報錯了,不能生成成功。后來排查后發(fā)現(xiàn)是版本問題,我的idea是vs2013,當(dāng)前sandcastle版本只支持最低vs2015的Idea,所以一直報錯。
這個版本中備注描述的很清楚,這是最后一個支持vs2013的版本。
主要配置詳解
3.1 首先打開SandCastle,新建一個文件用來存放sandcastle新建的工程文件,類似vs中新建項目后的解決方案。
3.2 在項目屬性中選擇需要生成的api類型,如果你想生成類似MSDN幫助文檔風(fēng)格,就可以選擇Website。
3.3 Framework version 選擇生成解決方案的framework版本號,如果與之不一致,則生成api時會報錯
chm類型生成的文檔(參考)
website類型
在vs中的引用類按f1可打開該類的幫助文檔。
3.4.點擊Project Explorer,點擊新建的api文件,右擊Documentation Sources選擇Add Document Source
3.5 選擇的類庫生成屬性中需在輸出中xml文檔文件復(fù)選框打鉤在生成,否則生成api無效。
3.6 選擇所需生成的類庫,也就是后綴名為.csproj的文件即可
4.1 SHFB: Error BE0043: Unexpected error detected in last build step. See output above for details.
錯誤信息的意思是缺少程序集的引用,那我就需要把不用的程序集剔除掉,那么如何剔除呢,請看一下操作
4.2 SHFB: Error BE0064: BUILD CANCELLED BY USER
這個錯誤是由于框架版本不一致所引起的,也就是如果該項目生成時選擇的framework版本為4.5,而sandcastle配置的是4.0版本,那么就會報錯。
4.3 Sandcastle [丟失<summary> 節(jié)點]的問題
遇到這個問題,首先查看代碼注釋是否有<summary>節(jié)點,是否規(guī)范。
然后有人會說我明明在代碼中已經(jīng)定義了summary 節(jié)點,為什么還會報這種錯呢?
這種我嘗試最暴力的方法就是讓它不提示這個錯誤,在sandcastle中設(shè)置missing tags,取消<summary> elments 的報錯信息,點擊取消復(fù)選框,哪個節(jié)點的報錯就不會報錯。
前面說了都是sandcastle軟件的獨立使用,還有一種方法是將其集成在vs中使用,使用方法與獨立使用相差不大。
如果是已經(jīng)安裝了sandcastle,那么請忽略以下安裝步驟。
5.1 在sandcastle目錄文件夾下找到后綴為vsix的插件,雙擊執(zhí)行,如果彈出此擴展已安裝,那么表示安裝成功
5.2 在需生成api的項目下添加項目,如果已安裝成功,那么在已安裝的擴展插件中Documentation就會出現(xiàn)sandcastle插件,輸入名稱,存放位置,點擊確定添加。
5.3.添加完成后,此時的操作和不是集成在vs中的無明顯差別,如需生成文檔,右擊新建的文件,點擊生成即可。
上面所有步驟完成之后就可以運行sandcastle了,點擊build the help file生成
生成成功之后在當(dāng)前生成目錄下,查看生成文件是否齊全,如果文件不全,那么原因在于生成不成功或配置不正確
雙擊index.html查看api中是否有報錯信息,代碼是否高亮,鏈接是否可點。
作者:edisoner
聲明:本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但必須保留此聲明,并在文章頁面明顯位置給出原文鏈接,否則作者將保留追究法律責(zé)任的權(quán)利。