2013-05-28 35 views
5

Tôi đã tạo một nhóm TFS cho các lập trình viên của công ty và tôi đang cố gắng lấy danh sách các lập trình viên trên nhóm đó. Điều này ở đây cho đến nay tôi đã cố gắng.Nhận các thành viên của nhóm TFS

ICommonStructureService iss = (ICommonStructureService)tfsServer.GetService(typeof(ICommonStructureService)); 
    IGroupSecurityService gss = tfsServer.GetService<IGroupSecurityService>(); 

    Identity SIDS = gss.ReadIdentity(SearchFactor.AccountName, "Project Collection Valid Users", QueryMembership.Expanded); 
    Identity[] _userIds = gss.ReadIdentities(SearchFactor.Sid, SIDS.Members, QueryMembership.None); 

    var companyProgrammers = _userIds.Where(u=>u.MemeberOf.Contains("CompanyProgrammers")).ToList(); 

Danh sách trống.

Tôi có thiếu gì đó không?

Trả lời

12

Điều này sẽ trả về danh sách Microsoft.TeamFoundation.Server.Identity đối tượng là người dùng TFS thực tế bạn đang tìm kiếm. Sau đó bạn có thể tuần tự hóa các đối tượng này cho các thực thể của riêng bạn để bạn có thể làm bất cứ điều gì bạn muốn với chúng sau đó.

Sau đây là cách nó được thực hiện:

private List<Identity> ListContributors() 
{ 
    const string projectName = "<<TFS PROJECT NAME>>"; 
    const string groupName = "Contributors"; 
    const string projectUri = "<<TFS PROJECT COLLECTION>>"; 

    TfsTeamProjectCollection projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(projectUri)); 
    ICommonStructureService css = (ICommonStructureService) projectCollection.GetService(typeof(ICommonStructureService)); 
    IGroupSecurityService gss = projectCollection.GetService<IGroupSecurityService>(); 

    // get the tfs project 
    var projectList = css.ListAllProjects(); 
    var project = projectList.FirstOrDefault(o => o.Name.Contains(projectName)); 

    // project doesn't exist 
    if (project == null) return null; 

    // get the tfs group 
    var groupList = gss.ListApplicationGroups(project.Uri); 
    var group = groupList.FirstOrDefault(o => o.AccountName.Contains(groupName)); // you can also use DisplayName 

    // group doesn't exist 
    if (group == null) return null; 

    Identity sids = gss.ReadIdentity(SearchFactor.Sid, group.Sid, QueryMembership.Expanded); 

    // there are no users 
    if (sids.Members.Length == 0) return null; 

    // convert to a list 
    List<Identity> contributors = gss.ReadIdentities(SearchFactor.Sid, sids.Members, QueryMembership.Expanded).ToList(); 

    return contributors; 
} 
+0

Các IGroupSecurityService là lỗi thời hiện nay. Bạn sẽ làm điều này bằng cách sử dụng API mới như thế nào? –

+2

Mã lỗi thời. IIdentityManagementService hoặc ISecurityService nên được sử dụng, theo đề nghị. Có ai biết cách sử dụng các giao diện đó không? – jwrightmail

Các vấn đề liên quan