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

发布于 2024-07-11 04:17:13 字数 375 浏览 6 评论 0原文

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

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

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

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

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

I'm laying the groundwork for an automated build process and am trying to make sure I start down the right path. Our codebase is a mixture of Managed/Unmanaged C++. The managed part is in .NET 2.0 and all of the projects are part of a Visual Studio 2005 solution.

Right now I'm looking at NAnt, but I can't figure out how to perform a build. When I try to build using the tag, it spits out an error:

Microsoft Visual Studio.NET 2005 solutions are not supported.

I feel like I'm just approaching this problem from the wrong direction. Can anyone point me in the right one?

P.S. I also want to run doxygen as part of the build process, but I assume that whatever tool I choose will allow me to run it as a shell command at the very least.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

相思故 2024-07-18 04:17:14

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

What's wrong with MSBuild? All your projects already use it, it's a good product, and it's free.

蓝戈者 2024-07-18 04:17:14

我们从 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 构建时正确设置环境:

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 %*

We've used NAnt since VS003, VS2005 and now with VS2008 (although VS2008 and .net 3.5 requires the lastest build of NAnt 0.86+) so to answer your first question, yes NAnt will work just fine.

Here's a template that should get you started:

<?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>

And finally make sure your environment is setup correctly when running the build for 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 %*
呆萌少年 2024-07-18 04:17:14

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

因此,根据项目的不同,MSBuild 或 VCBuild 应该可以解决问题。 为了留在 NAnt 中,可以通过 exec 任务直接使用 MSBuild 或 VCBuild。

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

Come to think of it, MSBuild for VS2005 (8.0) does not fully support VC++. Depending on the project combination one could run into problems with using MSBuild as it directly calls out to VCBuild for native projects (which can be seen in the msdn forums).

So depending on the projects, either MSBuild or VCBuild should do the trick. To stay within NAnt one could use MSBuild or VCBuild directly by using the exec task.

If in VS2008 (.NET 3.5 framework), MSBuild does have a VCBuild task. You could then use the latest (.86 beta 1 version) of NAnt, combined with NAntContrib (provides msbuild task) to get 3.5 support.

逆光飞翔i 2024-07-18 04:17:14

您可以通过 C++ 使用巡航控制:

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

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

You can use cruise control with c++:

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

We use make/cron and some home made scripts for crossplatform builds and it does the job (including running unit tests) - the reporting is a little crass though

_蜘蛛 2024-07-18 04:17:14

Kinook 有一个不错的产品,名为 Visual Build,它可能会满足您的需求。

Kinook has a nice product called Visual Build that might serve your needs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文