使用托管C ++的自动构建工具(.NET 2.0)

时间:2008-12-30 20:37:06

标签: .net .net-2.0 build-process nant

我正在为自动构建过程奠定基础,并且我正在努力确保我开始走正确的道路。我们的代码库是托管/非托管C ++的混合体。托管部分使用.NET 2.0,所有项目都是Visual Studio 2005解决方案的一部分。

现在我正在看NAnt,但我无法弄清楚如何执行构建。当我尝试使用标记构建时,它会发出错误:

  

不支持Microsoft Visual Studio.NET 2005解决方案。

我觉得我只是从错误的方向接近这个问题。有人能指出我正确的吗?

P.S。我还想在构建过程中运行doxygen,但我认为无论我选择哪种工具都可以让我至少将它作为shell命令运行。

5 个答案:

答案 0 :(得分:3)

MSBuild出了什么问题?你的所有项目都已经使用它,它是一个很好的产品,它是免费的。

答案 1 :(得分:2)

自VS003,VS2005以及VS2008以来我们一直使用NAnt(虽然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 %*

答案 2 :(得分:1)

想想看,MSBuild for VS2005(8.0)不完全支持VC ++。根据项目组合,可能会遇到使用MSBuild的问题,因为它直接调用VCBuild本机项目(可以在msdn forums中看到)。

因此,根据项目,MSBuild或VCBuild应该可以解决问题。要保持在NAnt中,可以使用exec任务直接使用MSBuild或VCBuild。

如果在VS2008(.NET 3.5框架)中,MSBuild确实有VCBuild task。然后,您可以使用NAnt的最新(.86 beta 1版本),并结合NAntContrib(提供msbuild任务)获得3.5支持。

答案 3 :(得分:0)

你可以使用c ++的巡航控制:

http://confluence.public.thoughtworks.org/display/CC/UsingCruiseControlWithCplusPlus

我们使用make / cron和一些自制脚本进行跨平台构建,它完成了工作(包括运行单元测试) - 虽然报告有点粗糙

答案 4 :(得分:0)

Kinook有一款名为Visual Build的好产品可能满足您的需求。