【问题标题】:MSBuild stops on the first error when called inside NAnt script?在 NAnt 脚本中调用时,MSBuild 在第一个错误时停止?
【发布时间】:2009-09-25 08:00:59
【问题描述】:

我正在尝试在 NAnt 中构建 VS 2008 解决方案,但似乎 msbuild 在发生第一个编译错误后停止了构建过程。

在 MSBuild 中有一个“ContinueOnError=true”或“StopOnFirstFailure=false”属性,但是如何在 NAnt 中指定呢? failonerror="false" 没有解决问题:

【问题讨论】:

    标签: msbuild nant


    【解决方案1】:

    我需要承认这只是初步猜测,但您是否尝试过将 ContinueOnError=true 作为属性传递给 MSBuild?

    假设您使用 NAntContrib msbuild 任务:

    <msbuild project="${projectfile.path}">
      <property
        name="ContinueOnError"
        value="true" />
    </msbuild>
    

    或者用exec任务:

    <exec program="${msbuild.exe.path}">
      <arg value="&quot;${projectfile.path}&quot;" />
      <arg value="/p:ContinueOnError=true" />
    </exec>
    

    如果就这么简单,岂不是很完美?

    【讨论】:

    • 但我在某处读到“msbuild”任务与 vs 2008 项目 /.NET 3.5 不兼容,仅与 2003 或 2005 兼容
    • 兼容。阅读我对答案stackoverflow.com/questions/1195389/… 的评论。您也可以尝试那里建议的 任务。
    【解决方案2】:

    我用 Nant 和 CC.Net 做配置管理已经有一段时间了。根据我的经验,我不建议使用 Nant MSBuild 任务,而是最简单的方法是创建任务,创建任务执行的 .bat 文件。推荐使用命令行 Visual Studio 的原因有很多,其中一个原因是 MSI 包不容易使用 Nant 构建,即使您使用 contrib。此外,它应该消除您的 Nant continue on error request,即使一个项目失败,Devenv 也应该自动继续构建。此外,如果您使用此方法,您将不必担心将 nant 和 nant contrib 更改为处理 3.5。如果您使用 Cruise control,您仍会在 XML 文件中看到您的构建输出。

    ---------2.0 --------

    "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv" C:\YourProject\YourSoultion.sln /重建版本

    ---------3.5--------

    "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv" C:\YourProject\YourSoultion.sln /重建版本

    【讨论】:

      猜你喜欢
      • 2010-10-03
      • 2014-12-16
      • 2011-01-12
      • 2016-07-12
      • 2014-11-29
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      相关资源
      最近更新 更多