При запуске 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 и 1023 * child сценарий вызывается с помощью задачи Exec (в противном случае изменение env.variable не имеет никакого эффекта).