При запуске MSBuild все, что передается в командной строке с использованием /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 не влияет).
переменные окружения btw также вступают в силу при вызове задачи VCBuild, а не только задачи Exec – stijn