TFS 2012自定义构建工作流;未找到生成覆盖率

TFS 2012自定义构建工作流;未找到生成覆盖率,tfs,workflow-activity,Tfs,Workflow Activity,在自定义TFS 2012工作流中,我使用以下代码段: IBuildDetail buildDetail = context.GetValue(BuildDetail); var testManagementService = TfsTeamProjectCollectionFactory .GetTeamProjectCollection(new Uri("http://tfs:8080/tfs/Sandbox")) .GetSer

在自定义TFS 2012工作流中,我使用以下代码段:

IBuildDetail buildDetail = context.GetValue(BuildDetail);
var testManagementService = TfsTeamProjectCollectionFactory
                .GetTeamProjectCollection(new Uri("http://tfs:8080/tfs/Sandbox"))
                .GetService<ITestManagementService>();

var buildCoverages = testManagementService
                .GetTeamProject(buildDetail.TeamProject)
                .CoverageAnalysisManager
                .QueryBuildCoverage(buildDetail.Uri.ToString(), CoverageQueryFlags.Modules);
出于测试目的,自定义活动是“签入门控更改”之后工作流中的最后一个活动。在生成过程中,
buildCoverages
变量包含一个长度为0的数组。知道为什么吗?构建完成后,覆盖率结果是否异步提交回TFS?在“事务”中的生成和上述代码是否在对正在进行的生成不可见的情况下运行?非常感谢您的帮助。

我不确定原因(可能有很多原因),但在构建工作流期间通过此界面提供的覆盖范围与工作流并不同步。添加延迟循环

do
{
    buildCoverages = testManagementService
            .GetTeamProject(buildDetail.TeamProject)
            .CoverageAnalysisManager
            .QueryBuildCoverage(buildDetail.Uri.ToString(), CoverageQueryFlags.Modules);
} while(buildCoverages.Length == 0 && retryDelay())
围绕这段代码,可以确保(到目前为止只需几秒钟)构建覆盖率阵列的可用性

do
{
    buildCoverages = testManagementService
            .GetTeamProject(buildDetail.TeamProject)
            .CoverageAnalysisManager
            .QueryBuildCoverage(buildDetail.Uri.ToString(), CoverageQueryFlags.Modules);
} while(buildCoverages.Length == 0 && retryDelay())