TFS二次开发10——分组(Group)和成员(Member)
TFS SDK 10 ——分组(Group)和成员(Member)
这篇来介绍怎样读取TFS服务器上的用户信息
首先TFS默认有如下分组(Group):
SharePoint Web Application Services
Team Foundation Administrators
Team Foundation Proxy Service Accounts
Team Foundation Service Accounts
Team Foundation Valid Users
Work Item Only View Users
其中
Team Foundation Valid Users 包含其他所有分组
Team Foundation Administrators 包含 Team Foundation Service Accounts
然后每一个Collection也有类似如上的默认分组,及同样的包含关系
Project Collection Administrators
Project Collection Build Administrators
Project Collection Build Service Accounts
Project Collection Proxy Service Accounts
Project Collection Service Accounts
Project Collection Test Service Accounts
Project Collection Valid Users
其中
Project Collection Valid Users 包含其他所有分组
Project Collection Administrators包含Project Collection Service Accounts
我们可以在TFS server 端看到这些。
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Server;
using Microsoft.TeamFoundation.VersionControl.Client;
//连接TFS
string tpcURL = "http://127.0.0.1:8080/tfs/defaultcollection";
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(tpcURL));
IGroupSecurityService gss = (IGroupSecurityService)tpc.GetService(typeof(IGroupSecurityService));//所有关于分组和成员的相关的操作都是基于IGroupSecurityService的。
//1:获取全部用户
//先查出用户的Id。参数 QueryMembership 指定是否包含其下从属分组的用户
Identity sids = gss.ReadIdentity(SearchFactor.AccountName, "Team Foundation Valid Users", QueryMembership.Expanded);
//通过id获取用户的信息,包括名称,邮箱等等
var members = gss.ReadIdentities(SearchFactor.Sid, sids.Members, QueryMembership.Expanded);
//2:获取指定项目下的所有分组
VersionControlServer version = tpc.GetService(typeof(VersionControlServer)) as VersionControlServer;
TeamProject[] allProjects = version.GetAllTeamProjects(true);
string projectUrl = allProjects[].ArtifactUri.AbsoluteUri;
Identity[] groups = gss.ListApplicationGroups(projectUrl);
//3:添加分组
string groupName = "MyGroup";
string desp = "My Group Description";
string groupSid = gss.CreateApplicationGroup(projectUrl, groupName, desp);
//4: 删除分组
gss.DeleteApplicationGroup(groupSid);
//5:获取指定分组下的成员
Identity group = groups[];
var gsids = gss.ReadIdentity(SearchFactor.Sid, group.Sid, QueryMembership.Expanded);
Identity[] gmembers = gss.ReadIdentities(SearchFactor.Sid, gsids.Members, QueryMembership.Expanded);
//成员不一定是指用户(User) ,也可能是分组(Group)
//成员的类型有如下几种:
//gmembers[0].Type== IdentityType.ApplicationGroup;
//gmembers[0].Type== IdentityType.InvalidIdentity
//gmembers[0].Type== IdentityType.UnknownIdentityType
//gmembers[0].Type== IdentityType.WindowsGroup
//gmembers[0].Type== IdentityType.WindowsUser
//6:把指定成员添加到指定分组
string memberSid = gmembers[].Sid;
gss.AddMemberToApplicationGroup(group.Sid, memberSid);
//7:把指定成员从指定分组移除
gss.RemoveMemberFromApplicationGroup(group.Sid, memberSid);
TFS二次开发10——分组(Group)和成员(Member)的更多相关文章
- TFS二次开发系列索引
TFS二次开发11——标签(Label) TFS二次开发10——分组(Group)和成员(Member) TFS二次开发09——查看文件历史(QueryHistory) TFS二次开发08——分支(B ...
- TFS二次开发、C#知识点、SQL知识
TFS二次开发.C#知识点.SQL知识总结目录 TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一 ...
- TFS二次开发系列:三、TFS二次开发的第一个实例
首先我们需要认识TFS二次开发的两大获取服务对象的类. 他们分别为TfsConfigurationServer和TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS ...
- TFS二次开发、C#知识点、SQL知识总结目录
TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一个实例 TFS二次开发系列:四.TFS二次开发Wor ...
- TFS二次开发系列:七、TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)
在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一:连接TFS服务器,并且得到之后需要使用到的类方法. /// < ...
- TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)
TFS二次开发的数据统计以PBI.Bug.Sprint等为例(一) 在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一 ...
- TFS二次开发02——连接TFS
在上一篇<TFS二次开发01——TeamProjectsPicher>介绍了 TeamProjectsPicher 对象,使用该对象可以很简单的实现连接TFS. 但是如果我们要实现自定义 ...
- TFS二次开发-基线文件管理器(5)-源码文件的读取
在上一节中,我们在保存标签之前,已经将勾选的文件路径保存到了Listbox中,这里只需要将保存的数据输出去为txt文档就可以做版本控制了. 版本文件比较复杂的是如何读取,也就是如何通过文件路径 ...
- TFS二次开发系列:五、工作项查询
本节将讲述如何查询工作项,用于二次开发中定义获取工作项列表. 使用WorkItemStore.Query方法进行查询工作项,其使用的语法和SQL语法类似: Select [标题] from worki ...
随机推荐
- matplotlib使用GridSpec调整子图位置大小 (非对称的子图)
用matplotlib.pyplot的subplots命令可以很方便的画对称的子图,但是如果要画非对称的子图(如下)就需要用GridSpec命令来控制子图的位置和大小: 而上图的结构可以用一下两种方式 ...
- phpcms 字符截取str_cut的使用
PHPCMS中截取字符串用的是 str_cut 系统函数,通常在输出标题或者是内容摘要的时候使用来限制字符串的字符,这样就可以防止因字符串而变成的页面变形等问题. 我们来看一下这个函数,在PHPCMS ...
- eclipse 搜索 正则表达式
1.换行搜索,如下: \.dyform\([\r]*[\s]*\{
- HTML5标签canvas图像处理
摘要: canvas可以读取图片后,使用drawImage方法在画布内进行重绘.本文介绍canvas的图像处理 drawImage drawImage() 方法在画布上绘制图像.画布或视频.drawI ...
- 第五种方式,python使用组合来添加类方法和属性(二),以selenium的webdriver为例
组合优点多,但经常比继承需要额外的代码. 上一篇是 介绍装饰器.继承.元类.mixin,四种給类动态添加类属性和方法的四种方式. 此篇介绍直接把被组合的类的属性直接加入到类里面,前面的四个例子很简单, ...
- winform 打开一个窗体,关闭一个窗体
例如 我要打开一个窗体b,关闭一个窗体a a中的代码添加: private void pictureBox5_Click(object sender, EventArgs e) { W_MainFo ...
- PHP 免费获取手机号码归属地
一.淘宝网API API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443 参数: tel:手机号码 返回 ...
- 5 -- Hibernate的基本用法 --4 1 创建Configuration对象
org.hibernate.cfg.Configuration实例代表了应用程序到SQL数据库的配置信息,Configuration对象提供了一个buildSessionFactory()方法,该方法 ...
- Flickr Hosts
Test Page: http://www.flickr.com/help/test Hosts: 77.238.160.184 farm6.staticflickr.com 98.139.21.45 ...
- HTML 格式化
格式化标签: <!DOCTYPE HTML> <html> <body> <b> This text is bold </b> # < ...