Как я могу определить свойства динамически и передать их другой цели в msbuild? - PullRequest
4 голосов
/ 21 июля 2009

Я пытаюсь повторно использовать задачу способом Ant:

   <Target Name="Release">
        <Message Text="Env: $(Env)"/>
   </Target>
   <Target Name="ReleaseIntegration">
    <CreateProperty Value="Development">
      <Output TaskParameter="Value" PropertyName="Env" />
    </CreateProperty>
    <Message Text="Env: $(Env)"/>
    <CallTarget Targets="Release"/>
  </Target>

И я получаю:

Env: Development
Env: 

Есть идеи, как добавить это свойство в цель выпуска?

1 Ответ

7 голосов
/ 21 июля 2009

Существует ошибка с динамическими элементами и свойствами:

Проблема связана с невозможностью доступа к элементам и свойствам, созданным внутри цели, до тех пор, пока целевое выполнение фактически не завершится

(Подробнее здесь ).

Обходной путь прост: используйте одну отдельную цель для создания свойства.

<Target Name="Release">
  <Message Text="Env: $(Env)"/>
</Target>

<Target Name="CreateProperty">
  <CreateProperty Value="Development">
    <Output TaskParameter="Value" PropertyName="Env" />
  </CreateProperty>      
</Target>

<Target Name="ReleaseIntegration" DependsOnTargets="CreateProperty">
  <Message Text="Env: $(Env)"/>
  <CallTarget Targets="Release"/>
</Target>

Вы получите:

Env: Development
Env: Development
...