2008-12-30 98 views
3

我正在爲自動化構建過程奠定基礎,並且正在努力確保我開始沿着正確的道路前進。我們的代碼庫是Managed/Unmanaged C++的混合體。被管理的部分在.NET 2.0中,所有的項目都是Visual Studio 2005解決方案的一部分。使用託管C++的自動化構建工具(.NET 2.0)

現在我正在看NAnt,但我無法弄清楚如何執行構建。當我嘗試使用標籤來構建,它吐出一個錯誤:

Microsoft Visual Studio.NET 2005 solutions are not supported.

我覺得像我剛剛從錯誤的方向處理這個問題。任何人都可以指出我是正確的嗎?

P.S.我也想運行doxygen作爲構建過程的一部分,但我認爲無論選擇什麼工具,都會允許我至少將它作爲shell命令運行。

回答

3

MSBuild有什麼問題?你所有的項目都已經使用它,這是一個很好的產品,而且它是免費的。

+0

MSBuild更適合這種情況嗎?是否有可能使用NAnt編譯這個應用程序? – brian 2008-12-30 20:45:29

+0

是的,您可以使用NAnt編譯它,但您可能必須創建一個NAnt構建文件才能這樣做。 MSBuild通常可以執行任何NAnt可以執行的任何操作,並且它已被IDE和環境使用。 – 2008-12-30 20:48:32

1

想想吧,MSBuild for VS2005(8.0)並不是完全是支持VC++。根據項目組合,使用MSBuild時可能會遇到問題,因爲它直接調用VCBuild作爲本地項目(可在msdn forums中看到)。

因此,根據項目,無論是MSBuild或VCBuild應該做的伎倆。要保持在NAnt中,可以使用exec任務直接使用MSBuild或VCBuild。

如果在VS2008(.NET 3.5框架)中,MSBuild確實有VCBuild task。然後你可以使用最新的(.86 beta 1版本)NAnt,加上NAntContrib(提供msbuild任務)來獲得3.5的支持。

2

我們已經使用了NAnt,因爲VS003,VS2005,現在VS2008(儘管VS2008和.net 3.5需要NAnt 0.86+的最新版本),所以要回答你的第一個問題,是NAnt將工作得很好。

這裏是一個應該讓你開始一個模板:

<?xml version="1.0"?> 
<project name="Test Build" default="build" xmlns="http://nant.sf.net/release/0.85-rc4/nant.xsd"> 

<property name="target" value="rebuild" overwrite="false" /> 
<property name="configuration" value="debug" overwrite="false" /> 
<property name="projectName" value="MyProject.sln"/> 

<target name="build" description="Build all targets."> 
    <call target="build.MyProject"/> 
</target> 

<target name="build.MyProject"> 
    <exec program="MSBuild" failonerror="true" commandline="/t:${target} /p:Configuration=${configuration} ${projectName}" /> 
</target> 

</project> 

最後確保了VS2005運行的版本,當你的環境是否設置正確:

的build.bat:

call "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86 
"C:\Program Files\NANT\bin\NAnt.exe" -t:net-2.0 -logfile:buildlog.txt %*