是否可以将项目(* .csproj)的MSBuild进程作为正常执行流程终止?
像
这样的东西<Exit Condition="..."></Exit>
这不应该引发错误。它应该是在特定条件下跳过建立项目的有效流程。
该项目是一个Visual Studio项目,这意味着Build目标是在Microsoft.Common.Target文件中定义的,而不是在csproj中。
答案 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)" />
这似乎有效,特别是当项目构建为解决方案中多个项目的批量构建的一部分时。