MSBuild -target开关对应哪个项目属性?如何检测传入的Pack目标?
如何判断MSBuild命令行传入的目标是否包含Pack
直接用MSBuild内置属性
$(MSBuildTargets)即可,它会返回命令行通过-t/--target指定的所有目标(多个目标用分号分隔),判断条件写成$(MSBuildTargets.Contains('Pack'))就能生效。你之前试的几个属性无效的原因:
InitialTargets是项目文件里定义的初始执行目标,和命令行传入的目标无关DefaultTargets是项目未指定-t时默认执行的目标,不对应命令行传入的值Targets并非MSBuild的内置属性,自然取不到有效内容
给你个实际可用的示例,在项目文件里添加如下目标来验证:
<Target Name="VerifyPackTarget" BeforeTargets="Build"> <Message Text="命令行指定了Pack目标" Condition="'$(MSBuildTargets.Contains('Pack'))' == 'True'" Importance="High" /> <Message Text="命令行未指定Pack目标" Condition="'$(MSBuildTargets.Contains('Pack'))' != 'True'" Importance="High" /> </Target>
执行msbuild -t Pack时会输出第一条提示,执行普通msbuild命令时则输出第二条。
内容的提问来源于stack exchange,提问作者Luboš Hemala
相关产品推荐
相关产品推荐

