運行MSBuild時,可以從主腳本中調用的每個MSBuild腳本(通過MSBuild
任務)訪問通過命令行傳入的任何使用/p:MyProp=value
的內容。如何在任務中定義可以從每個腳本進行類似訪問的屬性?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
這是可能的,如果是這樣,怎麼樣?
我見過的建議使用環境變量,但似乎當變量在父腳本設置只情況,即,幫助是,和孩子腳本使用調用執行任務(否則env.variable更改不起作用)。
btw環境變量在調用VCBuild任務時也會生效,而不僅僅是Exec任務 – stijn 2009-12-25 11:40:17