【发布时间】:2016-11-14 16:31:57
【问题描述】:
寻找一种方法来查找集合中的项目如何构建,而不必逐个项目检查以找出答案。
简单的项目名称,上面有一个构建。
【问题讨论】:
-
项目的“名称”是什么?您有构建定义的 cs/vbproj 或 sln 文件的名称?
标签: tfs
寻找一种方法来查找集合中的项目如何构建,而不必逐个项目检查以找出答案。
简单的项目名称,上面有一个构建。
【问题讨论】:
标签: tfs
不,你不可能没有简单的方法来实现这一点。构建定义是在 Team Explorer - Build- New Build Definition 上创建的。这是项目级别,而不是团队项目集合级别。来源链接:Create or edit a build definition
更新
如果您想在 Team Explore 中获得类似的构建结果,您可能必须使用 TFS API 来实现此目的,即使用 IBuildServer.QueryBuilds。
您必须先知道项目名称,然后才能根据日期过滤器查询构建。您不需要构建相关的工作项,也不需要相关的变更集或一堆其他东西。这提高了性能,示例代码如下:
var buildSpec = buildServer.CreateBuildDetailSpec(teamProjectName, buildDefinition);
buildSpec.InformationTypes = null;
buildSpec.MinFinishTime = DateTime.Now.AddHours(-lastXHours);
var buildDetails = buildServer.QueryBuilds(buildSpec).Builds;
更多详情请参考这篇博客:Fastest way to get list of builds using IBuildServer.QueryBuilds 和这个TFS API - How to query builds independent of which build definition they belong to
【讨论】:
IBuildServer.QueryBuilds。详情见此博客:Fastest way to get list of builds using IBuildServer.QueryBuilds
如果您提到的项目是 TeamProject,您可以创建一个简单的 powershell 脚本来通过 TFS API 获取:
$collectionurl = "http://xxxxxxxx/";
$tfs = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($collectionurl);
$buildservice = $tfs.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer]);
$workitemservice = $tfs.GetService([Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore]);
$projects = $workitemservice.Projects;
foreach ($project in $projects)
{
$builds = $buildservice.QueryBuilds($project.Name);
Write-Host $project.Name;
Write-Host "Build Count:" $builds.Count;
Write-Host "*****************************";
}
【讨论】: