Setting Property Values ​​in MSBuild

Let's look at the example below.

There I have:

  1. target MAIN calls target t, and then calls target tt.
  2. target t calls target ttt, and target tt calls target tttt.
  3. target t defines the aa property, and target ttt modifies aa.
  4. target tttt is trying to print the aa value property.
  5. In short, we have: MAIN → {t → {ttt-> modifies aa, defines aa}, tt → tttt → prints aa}

But in target tttt we cannot "see" the updated value (by ttt)! How to make this value visible to target tttt?

The whole scenario is as below:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="MAIN" >
  <Target Name="MAIN" >
    <CallTarget Targets="t" />
    <CallTarget Targets="tt" />
  </Target>

  <Target Name="t">
    <Message Text="t" />
    <PropertyGroup>
      <aa>1</aa>
    </PropertyGroup>
    <CallTarget Targets="ttt" />
  </Target>

  <Target Name="tt">
    <Message Text="tt" />
    <CallTarget Targets="tttt" />
  </Target>

  <Target Name="ttt">
    <PropertyGroup>
      <aa>122</aa>
    </PropertyGroup>
    <Message Text="ttt" />
  </Target>

  <Target Name="tttt">
    <Message Text="tttt" />
    <Message Text="tttt:$(aa)" />
  </Target>

</Project>
+3
source share
1 answer

, MSBuild , .

<Project DefaultTargets="tttt" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="t">
        <Message Text="t" />
            <PropertyGroup>
                <aa>1</aa>
            </PropertyGroup>
     </Target>

     <Target Name="tt" DependsOnTargets="t">
         <Message Text="tt" />
     </Target>

     <Target Name="ttt" DependsOnTargets="t;tt">
         <PropertyGroup>
             <aa>122</aa>
         </PropertyGroup>
         <Message Text="ttt" />
     </Target>

     <Target Name="tttt" DependsOnTargets="t;tt;ttt">
         <Message Text="tttt" />
         <Message Text="tttt:$(aa)" />
     </Target>
</Project>

, , , , DefaultTargets.

, , .

+2

Source: https://habr.com/ru/post/1738466/


All Articles