You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 00:32:00