首先我们需要认识TFS二次开发的两大获取服务对象的类。

  他们分别为TfsConfigurationServer和TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS API服务类。他们的区别如下:

服务

TfsConfigurationServer

(服务器级别)

TfsTeamProjectCollection

(集合级别)

ITeamFoundationRegistry

IIdentityManagementService

ITeamFoundationJobService

IPropertyService

IEventService

ISecurityService

ILocationService

TswaClientHyperlinkService

ITeamProjectCollectionService

 

IAdministrationService

ICatalogService

 

VersionControlServer

 

WorkItemStore

 

IBuildServer

 

ITestManagementService

 

ILinking

 

ICommonStructureService3

 

IServerStatusService

 

IProcessTemplates

 

  基本上我们可以通过上面两个类对TFS操作所有功能点。下面我们先看看如何使用TfsTeamProjectCollection获取特定团队集合下的所有项目,并且打印出项目名称。

 //取出团队集合URI下的项目名称,如果团队集合为空则取默认集合下项目
//Uri tfsUri = new Uri("http://pc-20130113jkun:8080/tfs/Calueng");这种将会Calueng团队集合下项目
Uri tfsUri = new Uri("http://pc-20130113jkun:8080/tfs");
TfsTeamProjectCollection server = new TfsTeamProjectCollection(tfsUri);
WorkItemStore workstore = server.GetService<WorkItemStore>();
foreach (Project project in workstore.Projects)
{
Console.WriteLine("DefaultCollection集合下项目名称是:" + project.Name);
}
Console.WriteLine("---------------------------------------------------------------");

  下面的例子将获取我们整个TFS服务器的所有团队集合以及团队集合下的所有团队名称

           //TFS配置服务获取所有项目的名称和所有的团队集合名称
TfsConfigurationServer configserver = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri);
ReadOnlyCollection<CatalogNode> collectNodes =
configserver.CatalogNode.QueryChildren(new[] { CatalogResourceTypes.ProjectCollection },
false, CatalogQueryOptions.None);
foreach (CatalogNode collect in collectNodes)
{
Guid collectid = new Guid(collect.Resource.Properties["InstanceId"]);
TfsTeamProjectCollection teamproject = configserver.GetTeamProjectCollection(collectid);
Console.WriteLine("团队集合名称: " + teamproject.Name);
ReadOnlyCollection<CatalogNode> projNodes = collect.QueryChildren(new[] { CatalogResourceTypes.TeamProject },
false, CatalogQueryOptions.None);
foreach (CatalogNode projnode in projNodes)
{
Console.WriteLine(" 团队项目名称:" + projnode.Resource.DisplayName);
}
}
Console.ReadLine();

  最后本实例使用VS2012+TFS2012编写。如需源码请点击 TFSTest1.rar 下载。当然你需要引入TFS的一些API DLL文件。

TFS二次开发系列:三、TFS二次开发的第一个实例的更多相关文章

  1. BizTalk开发系列(三十二)浅谈BizTalk主机性能优化

    很多BizTalk的项目都要考虑到性能优化的问题,虽然BizTalk采用多线程处理消息的,大大提高了程序效率.但默认情况下 BizTalk的主机有很多阻止参数会控制BizTalk对服务器的资源使用率, ...

  2. 微信程序开发系列教程(二)使用JavaScript给微信用户发送消息

    我之前的文章 微信程序开发系列教程(一)开发环境搭建 介绍了微信开发环境的搭建,这篇文章我们就来一步步开发一些具体的功能. 功能需求:当有微信用户关注了您的公众号之后,您用JavaScript发送一个 ...

  3. S5PV210开发系列三_简易Bootloader的实现

    S5PV210开发系列三 简易Bootloader的实现 象棋小子          1048272975 Bootloader是嵌入式系统上电后第一段运行的代码.对于功能简单的处理器,可能并没有Bo ...

  4. Docker & k8s 系列三:在k8s中部署单个服务实例

    本章将会讲解: pod的概念,以及如何向k8s中部署一个单体应用实例. 在上面的篇幅中,我们了解了docker,并制作.运行了docker镜像,然后将镜像发布至中央仓库了.然后又搭建了本机的k8s环境 ...

  5. 《C#微信开发系列(Top)-微信开发完整学习路线》

    年前就答应要将微信开发的学习路线整理给到大家,但是因为年后回来这段时间学校还有公司那边有很多事情需要兼顾,所以没能及时更新文章.今天特地花时间整理了下,话不多说,上图,希望对大家的学习有所帮助哈. 如 ...

  6. Java开发学习(三十二)----Maven多环境配置切换与跳过测试的三种方式

    一.多环境开发 我们平常都是在自己的开发环境进行开发, 当开发完成后,需要把开发的功能部署到测试环境供测试人员进行测试使用, 等测试人员测试通过后,我们会将项目部署到生成环境上线使用. 这个时候就有一 ...

  7. 【Qt程序】基于Qt词典开发系列&lt;十二&gt;呼叫讲述

    我们知道,win7系统自带有讲述人,即能够机器读出当前内容,详细能够将电脑锁定.然后点击左下角的button就可以.之前在用Matlab写扫雷游戏的时候,也以前调用过讲述人来进行游戏的语音提示. 详细 ...

  8. Windows下USB磁盘开发系列三:枚举系统中U盘、并获取其设备信息

    前面我们介绍了枚举系统中的U盘盘符(见<Windows下USB磁盘开发系列一:枚举系统中U盘的盘符>).以及获取USB设备的信息(见<Windows下USB磁盘开发系列二:枚举系统中 ...

  9. BizTalk 开发系列(三十九) BizTalk Server 2009技术概览

    BizTalk Server 2009已经发布一段时间了,之前Beta版发布的时候也写过一篇文章<BizTalk Server 2009 Beta初体验>, 当时比较了2006 R2与20 ...

  10. BizTalk开发系列(三十三)BizTalk之Excel终极解决方案

    Excel作为优秀的客户端数据处理程序得到了广泛的应用. 由于其简单又强大的功能在很多公司或个人的数据处理中占用非常重要的位置. 而BizTalk作为微软的SOA主打产品虽然免费提供了很多Adapte ...

随机推荐

  1. 分布式缓存Redis使用心得

    一.缓存在系统中用来做什么 1. 少量数据存储,高速读写访问.通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景. 2. 海量数据存储, ...

  2. iOS对键盘的处理

    方法1. 使用<UITextFeildDelegate>,使用的UITextField示例 设置其Delegate为self,点击return按钮隐藏键盘.实现函数如下:    - (BO ...

  3. Java开发环境搭建——Eclipse配置

    Pa设置utf-8a.b. (虽然不知道Spelling设置了有什么意义) 显示行号 添加jar包 快捷键xml注释选中内容   CTRL+SHIFT+/格式化                CTRL ...

  4. SAX与DOM

    http://www.cnblogs.com/zhulin/archive/2012/05/03/2480962.html 在解析xml时(如浏览器解析html标签),主要存在两种方式:SAX模式和D ...

  5. Java的发展历程

    Java的发展历程充满了传奇色彩. 最初,Java是由Sun公司的一个研究小组开发出来的, 该小组起先的目标是想用软件实现对家用电器进行集成控制的小型控制装置. 开始,准备采用C++,但C++太复杂, ...

  6. Root--超级用户

    http://www.shuame.com/root/  root (计算机术语言) ROOT存在于Linux系统.UNIX系统(如AIX.BSD等)和类UNIX系统(如稳定到服务器都在用的Debia ...

  7. ArcGIS Server开发教程系列(8)ArcGIS API for Javascript-控件(小部件)

    1.     鹰眼 OverviewMap小部件用于在其关联的主地图内较清楚的当前鸟瞰图的范围.当主地图范围变化时,鹰眼图会自动在其空间内更新范围以保持和地图的当前范围保持一致,当鹰眼图空间的地图范围 ...

  8. jquery ajax beforeSend 提交等待问题

    需要使用异步加载async : true 否则不会出现等待效果 $.ajax({ url : $('#form').attr("action"), data: $('#form') ...

  9. Charles抓Android的数据包

    1. 获得Mac OS的IP地址 2. 对Android手机设置代理,主机IP是步骤1中获得的IP,端口8888

  10. LoadRunner 函数之lr_xml_find

    实例如: char *xml_input = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>&qu ...