从项目中终止MSBuild,没有错误

时间:2014-05-07 07:19:10

标签: c# visual-studio-2010 visual-studio msbuild msbuild-task

是否可以将项目(* .csproj)的MSBuild进程作为正常执行流程终止?

这样的东西
<Exit Condition="..."></Exit>

这不应该引发错误。它应该是在特定条件下跳过建立项目的有效流程。

该项目是一个Visual Studio项目,这意味着Build目标是在Microsoft.Common.Target文件中定义的,而不是在csproj中。

2 个答案:

答案 0 :(得分:0)

仅错误标记将终止脚本而不会引发错误: 试试这个:

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Build">
    <Message Text="Before error"/>
    <Error/>
    <Message Text="After error"/>
  </Target>
</Project>

答案 1 :(得分:0)

我找到了解决方法。也许这不是最优雅的事情,但它确实有效。

我不得不重写&#34; Build&#34;目标。原始目标在Microsoft.Common.Targets文件中定义。我检查了文件,看看&#34; Build&#34;定义了目标,就像这样

<Target
   Name="Build"
   Condition=" '$(_InvalidConfigurationWarning)' != 'true' "
   DependsOnTargets="$(BuildDependsOn)"
   Returns="$(TargetPath)" />

所以,在我的项目文件中,我必须创建自己的&#34; Build&#34;目标与上面的那个相同,唯一的区别是它会有额外的条件逻辑

在我的csproj文件中,我创建了这个:

<Target
   Name="Build"
   Condition=" '$(_InvalidConfigurationWarning)' != 'true' And (.... more conditions here....) "
   DependsOnTargets="$(BuildDependsOn)"
   Returns="$(TargetPath)" />

这似乎有效,特别是当项目构建为解决方案中多个项目的批量构建的一部分时。