3

我正在为自动化构建过程奠定基础,并试图确保我走上正确的道路。我们的代码库是托管/非托管 C++ 的混合体。托管部分位于 .NET 2.0 中,所有项目都是 Visual Studio 2005 解决方案的一部分。

现在我正在查看 NAnt,但我不知道如何执行构建。当我尝试使用标签构建时,它会吐出一个错误:

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

我觉得我只是从错误的方向来解决这个问题。谁能指出我正确的?

PS 我也想在构建过程中运行 doxygen,但我假设我选择的任何工具都至少允许我将它作为 shell 命令运行。

4

5 回答 5

3

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

于 2008-12-30T20:41:37.327 回答
2

我们从 VS003、VS2005 开始使用 NAnt,现在使用 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 构建时您的环境设置正确:

构建.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 %*
于 2009-01-03T18:05:13.153 回答
1

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

因此,根据项目的不同,MSBuild 或 VCBuild 都可以解决问题。要留在 NAnt 中,可以使用 exec 任务直接使用 MSBuild 或 VCBuild。

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

于 2008-12-31T20:24:19.983 回答
0

您可以使用 C++ 进行巡航控制:

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

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

于 2008-12-30T20:47:37.457 回答
0

Kinook 有一个很好的产品,叫做Visual Build,它可以满足您的需求。

于 2008-12-31T20:36:49.833 回答