【发布时间】:2026-02-11 09:25:01
【问题描述】:
运行 MSBuild 时,在命令行中使用 /p:MyProp=value 传入的任何内容都可以从主脚本调用的每个 MSBuild 脚本(通过 MSBuild 任务)访问。如何在任务中定义可以从每个脚本中类似访问的属性?
例如:
Script1.proj:
[...]
<Target Name="Test">
<MSBuild Projects="Script2.proj"/>
<Message Text="Script1, GlobalProp1=$(GlobalProp1)"/>
<Message Text="Script1, GlobalProp2=$(GlobalProp2)"/>
</Target>
Script2.proj:
[...]
<Target Name="Test">
<!-- ??? Set GlobalProp2 = VALUE2 ??? -->
<Message Text="Script2, GlobalProp1=$(GlobalProp1)"/>
<Message Text="Script2, GlobalProp2=$(GlobalProp2)"/>
</Target>
如果像这样运行:msbuild Script1.proj /p:GlobalProp1=VALUE1 以上脚本产生以下输出:
Script2, GlobalProp1=VALUE1
Script2, GlobalProp2=
Script1, GlobalProp1=VALUE1
Script1, GlobalProp2=
我希望 Script2.proj 以某种方式设置 GlobalProp2 以产生以下输出:
Script2, GlobalProp1=VALUE1
Script2, GlobalProp2=VALUE2
Script1, GlobalProp1=VALUE1
Script1, GlobalProp2=VALUE2
这可能吗?如果可以,怎么做?
我看到了使用环境变量的建议,但似乎only 有帮助的情况是在 parent 脚本中设置变量时,并且child 脚本使用 Exec 任务调用(否则 env.variable 更改无效)。
【问题讨论】:
-
btw 环境变量在调用 VCBuild 任务时也会生效,而不仅仅是 Exec 任务
标签: msbuild msbuild-propertygroup