2009-07-21 2 views
4

Я пытаюсь повторно задачу в Ant образом:Как я могу определить свойства динамически и передать их другой цели в msbuild?

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

Любые идеи, как получить эту собственность в цель выпуска?

ответ

6

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

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

(Дополнительная информация here).

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

<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 
Смежные вопросы