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
これは可能ですか?もしそうなら、どのように?
環境変数を使用する提案を見てきましたが、それが役立つ唯一の状況は、変数が親スクリプトに設定され、子スクリプトがExecタスクを使用して呼び出された場合です(そうでない場合、env.variableの変更は無効)。