2011-10-24 27 views
8

我正在使用Sandcastle幫助文件構建器將我的C#XML-DOC文件輸出爲網站格式。我怎樣才能從命令行完成同樣的事情,以便在構建實際項目時可以將它作爲Visual Studio中的構建事件添加?構建Sandcastle文檔構建Visual Studio項目時

最終目標是在構建Visual Studio項目時生成網站幫助文件內容。

回答

9

正如Scott Wylie指出的那樣,您需要在Visual Studio項目屬性的後期構建事件命令行中指定此項。但是,我建議直接使用Sandcastle Help File Builder(SHFB)而不是Sandcastle。這使得在命令行通話簡短,如下圖所示,但要注意,首先你必須配置與SHFB GUI,它與「.shfbproj」後綴創建一個MSBuild兼容構建文件SHFB項目:

 
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
     /p:Configuration=Release myProject.shfbproj 

但是,請注意,我採取了與正在進行的操作相反的方法:不是使用Visual Studio交互式地啓動構建和輔助操作,而是使用ant(nant)啓動所有內容的構建,其中包括我的Visual Studio解決方案和隨後的SHFB行動。因此,這是真正的命令行調用我做構建與沙堡的文檔:

<exec executable="${msbuild}" dir="${csharpdoc}" output="${csharpdoc.log}"> 
    <arg value="/p:Configuration=Release"/> 
    <arg value="myProject.shfbproj"/> 
</exec> 

我的選擇是,所以沒有需要交互的整個構建應該是在命令行啓動的(如啓動Visual Studio的等)。這提供了運行的靈活性,既可以作爲計劃的循環任務運行,也可以從shell按需運行。

+1

因此,正如對另一個答案的評論所述,作爲正常Visual Studio構建屬性上的構建後事件,我添加了使用MSBuild構建SHFBPROJ文件的命令(與您在第一個代碼片段中發佈的內容類似)。但是,運行構建時,它會在任務管理器中啓動超過1000個MSBuild.exe實例並鎖定。任何想法爲什麼? –

+0

順便說一句,構建時我使用幫助生成器來編譯它而不是MSBuild,大約需要2分鐘。將它添加到後期構建中,在CPU使用率達到100%時運行了一個多小時,直到我終於殺死它爲止。 –

+0

@JohnChapman:你指的是什麼「幫助生成器」?它是否包含在SHFB包中? –

0

如果你使用MSBuild作爲你的構建工具,這是我用了一段時間回來的tutorial

codeplex上還有一個腳本,你可以使用它來幫助你。

希望這會有所幫助!

+0

這看起來像是用於TFS Builds。我如何在正常的項目構建中執行此操作? –

1

您可以在後期構建事件命令行中的項目屬性的構建事件部分調用SandCastle。如果你沒有使用任何自動構建工具,這應該很好地工作。

+0

在技術上,如果您在使用MSBuild自動構建工具的屬性窗口中編輯構建事件。只是想澄清。 – ajrawson

+0

我該如何做到這一點?我找到了一種方法來調用MSBuild對Sandcastle項目文件,但它啓動超過1000個單獨的MSBuild進程並鎖定計算機(從GUI構建時不這樣做)。 –

0

我發現最簡單的方法就是將* .shfbproj項目添加到解決方案中。它在VS 2010內部很好(雖然速度有點慢)。

+0

我無法在VS2013中添加shfbproj文件。 (我沒有安裝SHFB擴展,因爲這可能會污染解決方案構建目標。) – user2864740

相關問題