[英]Get a list of team projects using REST api in C# for on premise TFS 2015 Update3
[英]Add team's administrator in TFS 2017 by TFS API REST or TFS SERVER API C#
目前,Rest API无法实现这一点,甚至无法将用户添加到团队中。 有一个相关的uservoice:
添加Rest API以将成员添加到团队
您可以在服务器端使用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.