繁体   English   中英

通过TFS API REST或TFS SERVER API C#在TFS 2017中添加团队管理员

[英]Add team's administrator in TFS 2017 by TFS API REST or TFS SERVER API C#

我想通过使用TFS API REST或在c#中实现方法来添加团队管理员。...您能帮帮我吗? 有没有办法通过代码做到这一点,而不是像从tfs网站中看到的那样做到这一点? 谢谢!

在此处输入图片说明

目前,Rest API无法实现这一点,甚至无法将用户添加到团队中。 有一个相关的uservoice:

添加Rest API以将成员添加到团队

https://visualstudio.uservoice.com/forums/330519-team-services/suggestions/6088139-add-rest-api-for-adding-members-to-a-team

您可以在服务器端使用TFS API服务器来实现此目的,示例代码如下:

static void Main(string[] args)
{
    // Connect to the TFS server and get the team project URI.
    var collection = GetServer("server_uri");
    var projectUri = GetProjectUri(collection, "project_name");

    // Retrieve the default team.
    TfsTeamService teamService = collection.GetService<TfsTeamService>();
    TeamFoundationTeam defaultTeam = teamService.GetDefaultTeam(projectUri, null);

    // Get security namespace for the project collection.
    ISecurityService securityService = collection.GetService<ISecurityService>();
    SecurityNamespace securityNamespace = securityService.GetSecurityNamespace(FrameworkSecurity.IdentitiesNamespaceId);

    // Use reflection to retrieve a security token for the team.
    MethodInfo mi = typeof(IdentityHelper).GetMethod("CreateSecurityToken", BindingFlags.Static | BindingFlags.NonPublic);           
    string token = mi.Invoke(null, new object[] { defaultTeam.Identity }) as string;

    // Retrieve an ACL object for all the team members.
    var allMembers = defaultTeam.GetMembers(collection, MembershipQuery.Expanded).Where(m => !m.IsContainer);
    AccessControlList acl = securityNamespace.QueryAccessControlList(token, allMembers.Select(m => m.Descriptor), true);

    // Retrieve the team administrator SIDs by querying the ACL entries.
    var entries = acl.AccessControlEntries;
    var admins = entries.Where(e => (e.Allow & 15) == 15).Select(e => e.Descriptor.Identifier);

    // Finally, retrieve the actual TeamFoundationIdentity objects from the SIDs.
    var adminIdentities = allMembers.Where(m => admins.Contains(m.Descriptor.Identifier));       
}

尽管显示了如何查询团队管理员,但添加管理员也不难。

TeamFoundationIdentity admin

 string token = IdentityHelper.CreateSecurityToken(team.Identity); 

 securityNamespace.SetPermissions(token, admin.Descriptor, 15, 0, true);

确保您使用的帐户具有足够的权限来添加团队管理员以运行代码。 更多详细信息,请在问题中参考以下答案: TFS API-如何获取团队的管理员?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM