/p:MyProp=value
运行 MSBuild 时,可以从主脚本调用(通过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
这可能吗?如果可以,怎么做?
我已经看到使用环境变量的建议,但似乎唯一有帮助的情况是在父脚本中设置变量,并且使用 Exec 任务调用子脚本(否则 env.variable 更改有没有效果)。