2010-03-25 2 views
3

Рассмотрим приведенный ниже пример. Там, у меня есть:Проблема с заданными значениями свойств

  1. target ГЛАВНЫЙ вызов target t затем вызов target tt.
  2. target t call target ttt, target tt call target tttt.
  3. target t define property aa, target ttt изменить aa.
  4. target tttt попытаться распечатать свойство aa.
  5. короче мы имеем: ГЛАВНАЯ -> {т -> {ttt-> изменить аа, определить аа}, тт -> лл -> печать аа}

Но в целевом TTTT, мы не можем "см." обновленное значение aa (по ttt)! Пожалуйста, помогите мне сделать это значение видимым для целевого tttt. Спасибо!

Весь сценарий, как показано ниже:

<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> 
+0

В приведенном выше скрипте, если я удаляю определение aa в целевом t, в целевом tttt, aa 122 обновляется в целевом ttt. Я не понимаю, что происходит. –

ответ

2

Как уже было сказано в ответ на другую должность, вы должны смоделировать ваш проект MSBuild с зависимостями между вашими Targets, а не вызывать мишенями, одна за другой.

<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.

Затем добавьте все, что нужно для достижения этой цели.

Смежные вопросы