如何使用MSBuild脚本访问ITaskItem元数据?

时间:2012-05-08 17:05:22

标签: msbuild continuous-integration build-automation msbuild-task

我有一个自定义的Build任务,它将ITaskTem []作为输出返回到我的构建脚本。我无法找到有关如何在MSBuild脚本中访问这些值的文档/示例。

我的Execute方法调用这个返回数组的私有方法。我希望能够遍历输出并获得TaskItem ItemSpec和“Message”元数据项。我怎么能这样做?

[Output]
    public ITaskItem[] FailedTestsResults { get; set; }

...

 private ITaskItem[] GetFailedTests(TestResultsSummary testResultsSummary)
    {          
       IList<TestResult> testList = testResultsSummary.Tests.ToList();
       IEnumerable<TestResult> failedTests = testList.Where(x => !x.Passed);
        IList<ITaskItem> failedTestsTaskItems = new List<ITaskItem>();
        foreach (var failedTest in failedTests)
        {

                //test encountered enexpected error.
                ITaskItem failTestItem = new TaskItem(failedTest.TestName);
                failTestItem.SetMetadata("Message", failedTest.Message);
                failedTestsTaskItems.Add(failTestItem);
        }
        return (ITaskItem[]) failedTestsTaskItems.ToArray();
    }

1 个答案:

答案 0 :(得分:0)

我明白了。元数据可以像这样访问..

 <Message Text="Failed: %(FailedTests.Identity) => %(FailedTests.Message)" />

请注意使用'%'而不是'$'。