【发布时间】:2009-09-25 08:00:59
【问题描述】:
我正在尝试在 NAnt 中构建 VS 2008 解决方案,但似乎 msbuild 在发生第一个编译错误后停止了构建过程。
在 MSBuild 中有一个“ContinueOnError=true”或“StopOnFirstFailure=false”属性,但是如何在 NAnt 中指定呢? failonerror="false" 没有解决问题:
【问题讨论】:
我正在尝试在 NAnt 中构建 VS 2008 解决方案,但似乎 msbuild 在发生第一个编译错误后停止了构建过程。
在 MSBuild 中有一个“ContinueOnError=true”或“StopOnFirstFailure=false”属性,但是如何在 NAnt 中指定呢? failonerror="false" 没有解决问题:
【问题讨论】:
我需要承认这只是初步猜测,但您是否尝试过将 ContinueOnError=true 作为属性传递给 MSBuild?
假设您使用 NAntContrib msbuild 任务:
<msbuild project="${projectfile.path}">
<property
name="ContinueOnError"
value="true" />
</msbuild>
或者用exec任务:
<exec program="${msbuild.exe.path}">
<arg value=""${projectfile.path}"" />
<arg value="/p:ContinueOnError=true" />
</exec>
如果就这么简单,岂不是很完美?
【讨论】:
我用 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 /重建版本
【讨论】: