2009-09-03 2 views

ответ

42

Используйте свойство или товар. Ваш MSBuild, который вычисляет путь, возвращает его как свойство, и вы используете это свойство в качестве входа для своей другой задачи.

public class CalculatePathTask : ITask 
{ 
    [Output] 
    public String Path { get; set; } 

    public bool Execute() 
    {         
     Path = CalculatePath(); 

     return true; 
    } 
} 
<Target Name="CalculateAndUsePath"> 
    <CalculatePathTask> 
    <Output TaskParameter="Path" PropertyName="CalculatePath"/> 
    </CalculatePathTask> 

    <Message Text="My path is $(CalculatePath)"/> 
</Target> 

Если вам нужно передать значение между двумя проекта MSBuild, вы должны создать третий, который будет вызывать другой с помощью MSBuild задачи и использовать TargetOutputs элемент, чтобы вернуться значение, которое вам хотеть.

+2

всего лишь короткая заметка: В моем случае 'ItemName' не работал. Как только я изменил его на «PropertyName», он работал как шарм. – sebagomez

+0

Пробовал это, но получил параметр «ЗадачаПараметр» не поддерживается задачей «MyCustomTask». Убедитесь, что параметр существует в задаче, и это настраиваемый объект публичного экземпляра. ' – jpierson

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