2008-12-30 73 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 %*