TFS 11 2012 API问题:查询容量和休假日

Seb*_*ier 5 tfs tfs-sdk tfs2012

我需要使用TFS API完成一些事情.其中,我必须阅读每个项目的sprint的资源规划信息,以显示在WPF UI中.

本指南中标记,我现在有以下方法:

    private TfsTeamService _teamService;
    private ICommonStructureService4 _structureService;
    TeamSettingsConfigurationService _teamSettingsConfigurationService;

    public void GetUserIterationAssignments(IList<ProjectInfo> projects)
    {
        foreach (ProjectInfo project in projects)
        {
            Console.WriteLine(project.Name);

            TeamFoundationTeam team = _teamService.QueryTeams(project.Uri).First();
            IList<Guid> teamGuids = new List<Guid>() { team.Identity.TeamFoundationId };
            TeamConfiguration config = _teamSettingsConfigurationService.GetTeamConfigurations(teamGuids).FirstOrDefault();
            if (config != null)
            {
                foreach (string nodePath in config.TeamSettings.IterationPaths)
                {
                    var projectNameIndex = nodePath.IndexOf("\\", 2);
                    var fullPath = nodePath.Insert(projectNameIndex, "\\Iteration");
                    var nodeInfo = _structureService.GetNodeFromPath(fullPath);
                    if (nodeInfo.StartDate != null &&
                       nodeInfo.FinishDate != null)
                    {
                        foreach (TeamFoundationIdentity member in team.GetMembers(_collection, MembershipQuery.Direct))
                        {
                            Console.WriteLine("{0} is in assigned to {1} from {2}", 
                                                    member.DisplayName, 
                                                    nodeInfo.Name,
                                                    nodeInfo.StartDate,
                                                    nodeInfo.FinishDate);
                        }
                    }
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我需要打印到控制台(当然只是为了这个例子)是容量视图中显示的大部分信息:

在此输入图像描述

更确切地说,我需要访问

  • 每日容量
  • 休假(会员)
  • 休假(团队)

关于如何做到这一点的任何想法?

jes*_*ing 1

这些值只能从服务器对象模型中获得(目前没有等效的客户端对象模型)。接口和对象都是Internal这样设计的,即使在服务器上,您也无法访问这些值。

internal TeamCapacity GetTeamIterationCapacity(Guid teamId, Guid iterationId);

声明类型:Microsoft.TeamFoundation.Server.WebAccess.WorkItemTracking.Common.DataAccess.TeamConfigurationComponent

集会:Microsoft.TeamFoundation.Server.WebAccess.WorkItemTracking.Common, Version=12.0.0.0

目前,获取数据的唯一方法是通过/tfs/{ProjectCollection}/{Team Project}/_api/_teamcapacity/updateteamcapacity/{Team}/{Iteration/Path}?__v=4团队容量页面使用的 json 服务 ( ) 或直接从 James Tupper 提到的表中的 ProjectCollection 数据库获取数据。

看起来 json 服务正在使用请求验证,这使得它很难从任何外部系统使用。

所需免责声明

TFS 的服务器数据库不具备可扩展性,不支持对它们的任何直接查询,并且模型可能会在不通知的情况下发生更改,即使在服务包之间也是如此。不支持直接查询TFS数据库。通过官方 API 以外的任何其他方式更改 TFS 数据库中的值基本上会使您的 TFS 服务器处于不受支持的状态,并且在以后升级到新版本时可能会导致重大问题。