好用的Help檔產生器--NDoc的作者Kevin Downs在2006年7月宣告不再投入NDoc Open Source Project的開發,NDoc中止在1.3版,還來不及加上對2.0版Assembly的支援。讓Kevin決定退出的理由之一是微軟推出了SandCastle(沙雕城堡?)。

SandCastle目前最新的版本是Dec 2006 CTP,不像NDoc是個具有完整介面的GUI工具,主要為兩隻命令列工具程式(MrefBuilder & Build Assembler),要建立CHM檔得透過一連串的Command Line操作,對用慣NDoc的人來說挺不人性化的,所幸開發社群已有人寫出整合SandCastle的GUI介面,例如: SandCastleGUISandCastle Help File Builder(跟NDoc的操作介面相似)。

不過試作了一顆現有.NET 2.0自訂元件的Help檔,卻出師不利。由於元件額外參考了System.Configuration.dll,SandCastle Help File Builder(SHFB)會出現:
Error: Unresolved assembly reference: System.Configuration (System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a) required by YourAsmName 的錯誤。Goggle了一下,原來這是SandCastle CTP的一個大Bug--無法Reference GAC中的DLL檔(見FAQDoes Sandcastle resolve reference to GAC DLLs?);改用SandCastleGUI倒可以順利Build出CHM,只是中文會變亂碼的老問題又冒出來了(之前NDoc我也是改了Source才能正常處理中文),SandCastleGUI沒提供Source Code,沒法動手,所以我又回頭試著解決SHFB的問題。

追了一小段Code之後,我發現其實只要修改Program Files\EWSoftware\Sandcastle Help File Builder\Templates\GenerateRefInfo.bat,加入以下的紅字,連Code都不用改,問題就可以解決囉!

@ECHO OFF
REM Step 1 - Generate the reflection information
"{@SandcastlePath}ProductionTools\MRefBuilder" /config:MRefBuilder.config /out:reflection.org
/dep:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\*.dll {@Dependencies} {@DocInternals} *.dll *.exe


Comments

Be the first to post a comment

Post a comment


95 - 67 =