使用C#从TFS 2012中的团队项目中获取用户列表

本文关键字:项目 获取 用户 列表 团队 TFS 2012 使用 | 更新日期: 2023-09-27 18:28:00

我的目标是获取我的用户所在的团队项目中用户的全部信息。然后我想获取用户的电子邮件地址,并向他们发送分配任务的id。(这是一次演习)

我使用以下代码成功连接到服务器:

TfsTeamProjectCollection tfs = new TfsProjectCollection(new Uri(tfsUri));
ITeamProjectCollectionService tpcService = tfs.GetService<ITeamProjectCollectionService>();

但我不知道如何从这一点继续下去。

我寻找解决方案,但没有找到任何好的材料。

使用C#从TFS 2012中的团队项目中获取用户列表

您可以使用IIDenityManagementService从TFS Api检索(所有)用户。

IIdentityManagementService identityManagementService = tpcService.GetService<IIdentityManagementService>();
TeamFoundationIdentity[][] identities = 
    IdentityManagementService.ReadIdentities(
        IdentitySearchFactor.AccountName,
        new[] { "Project Collection Valid Users" },
        MembershipQuery.Expanded,
        ReadIdentityOptions.ExtendedProperties);
    

然后打印出所有的电子邮件

foreach (var user in identities) {
    Console.WriteLine(user.GetAttribute("Mail", null));
}
_identityManagementService = _collection.GetService<IIdentityManagementService2>();
var validUsers = _identityManagementService.ReadIdentities(IdentitySearchFactor.AccountName, new[] { "Project Collection Valid Users" }, MembershipQuery.Expanded, ReadIdentityOptions.None)[0][0].Members;
var users = _identityManagementService.ReadIdentities(validUsers, MembershipQuery.None, ReadIdentityOptions.None).Where(x => !x.IsContainer).ToArray();

users将保存简单的对象,检查调试中的对象以查看可用的属性。在第二个ReadIdentities中,您可以使用MembershipQueryReadIdentityOptions参数来获取有关用户的更多信息。