Lors de l'exécution de MSBuild, tout élément passé sur la ligne de commande à l'aide de /p:MyProp=value
est accessible à partir de chaque script MSBuild appelé (via la tâche MSBuild
) à partir du script principal. Comment puis-je définir une propriété accessible de la même manière pour chaque script, dans une tâche?MSBuild: comment créer une propriété globale?
Par exemple:
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>
Si REALISER comme ceci: msbuild Script1.proj /p:GlobalProp1=VALUE1
les scripts ci-dessus produisent la sortie suivante:
Script2, GlobalProp1=VALUE1
Script2, GlobalProp2=
Script1, GlobalProp1=VALUE1
Script1, GlobalProp2=
Je voudrais Script2.proj de mettre GlobalProp2 en quelque sorte à produire la sortie suivante:
Script2, GlobalProp1=VALUE1
Script2, GlobalProp2=VALUE2
Script1, GlobalProp1=VALUE1
Script1, GlobalProp2=VALUE2
Est-ce possible, et si oui, comment?
J'ai vu des suggestions pour utiliser des variables d'environnement, mais il semble que la situation ne où cette aide est lorsque la variable est définie dans le script parent , et le script enfantest appelé à l'aide du Tâche Exec (sinon, la modification env.variable n'a aucun effet).
btw variables d'environnement prennent également effet lors de l'appel de la tâche VCBuild, pas seulement la tâche d'exécution – stijn