在项目内无错误地终止MSBuild
本文关键字:终止 MSBuild 无错误 项目 | 更新日期: 2023-09-27 18:02:00
是否有可能终止MSBuild过程为一个项目(*.csproj)作为一个正常的执行流?
之类的<Exit Condition="..."></Exit>
这应该不会引发错误。它应该是在某些条件下跳过构建项目的有效流程。
该项目是一个Visual Studio项目,这意味着构建目标是在Microsoft.Common.Target文件中定义的,而不是在csproj.
单独使用error标签将终止脚本而不会引发错误:试试这个:
<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>
我找到了一个解决方法。也许这不是最优雅的做法,但它是有效的。
我必须重写"构建"目标。原始目标在Microsoft.Common.Targets文件中定义。我检查了文件,看看"构建"目标是如何定义的,它是这样的
<Target
Name="Build"
Condition=" '$(_InvalidConfigurationWarning)' != 'true' "
DependsOnTargets="$(BuildDependsOn)"
Returns="$(TargetPath)" />
因此,在我的项目文件中,我必须创建我自己的"Build"目标,它将与上面的目标相同,唯一的区别是它将具有额外的条件逻辑
在我的csproj文件中我创建了这个:
<Target
Name="Build"
Condition=" '$(_InvalidConfigurationWarning)' != 'true' And (.... more conditions here....) "
DependsOnTargets="$(BuildDependsOn)"
Returns="$(TargetPath)" />
这似乎可以工作,特别是当项目作为解决方案中多个项目的批量构建的一部分构建时。