从MsBuild任务返回输出?

时间:2009-09-03 12:02:18

标签: msbuild msbuild-task

我想在MsBuild任务中计算一个路径,供另一个MsBuild任务使用。 完成此任务的最佳方法是什么?

设置环境变量,打印到控制台,......?

1 个答案:

答案 0 :(得分:45)

使用属性或项目。您的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 Task调用另一个的值,并使用 TargetOutputs 元素来获取所需的值。