【问题标题】:Automated Build Tool With Managed C++ (.NET 2.0)使用托管 C++ (.NET 2.0) 的自动构建工具
【发布时间】:2010-09-28 22:08:26
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • MSBuild 是否更适合这种情况?甚至可以使用 NAnt 编译这个应用程序吗?
    • 是的,您可以使用 NAnt 编译它,但您可能必须创建一个 NAnt 构建文件才能这样做。 MSBuild 通常可以做任何 NAnt 可以做的事情,并且它已经被您的 IDE 和环境使用。
    • 让我支持 MSBuild - 可靠的设计、良好的 MS 和社区支持。
    • 您可以使用 MSBuild 上传文件吗?我知道你可以用 ANT 做到这一点...我不知道你是否可以用 NANT 做到这一点。
    【解决方案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 构建时您的环境设置正确:

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

    【讨论】:

      【解决方案3】:

      想想看,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 支持。

      【讨论】:

      • 我能够使用 MSBuild 构建这些项目,尽管 2005 年似乎不支持 .vdproj 文件。
      • 是的,MSBuild 实际上在 VS2005 中调用了 VCBuild。将更新答案。
      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-25
          • 2015-02-12
          • 1970-01-01
          • 2017-01-07
          • 2013-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多