Получить членов группы TFS
Я создал группу 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();
Список пуст.
Я что-то пропустил?
1 ответ
Решение
Это вернет список Microsoft.TeamFoundation.Server.Identity
объекты, которые являются фактическими пользователями TFS, которых вы ищете. Затем вы можете сериализовать эти объекты в ваши собственные объекты, чтобы потом вы могли делать с ними все, что захотите.
Вот как это делается:
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;
}