TFS二次开发系列:三、TFS二次开发的第一个实例

简介:

首先我们需要认识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文件。



本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/p/3163513.html,如需转载请自行联系原作者

相关文章
|
Java 关系型数据库 MySQL
网络安全-JDBC反序列化漏洞与RCE
网络安全-JDBC反序列化漏洞与RCE
695 0
|
11月前
|
开发工具 git
图解Git——分支的新建与合并《Pro Git》
在Git开发中,新建与合并分支是常见的操作。以实际开发为例:为实现新需求创建分支`iss53`进行开发;遇紧急Bug时,切换至线上分支创建`hotfix`修复并合并回线上分支,再切换回`iss53`继续工作。完成`iss53`后,切换到`master`合并。若出现冲突,使用`git status`查看,手动编辑解决冲突后标记为已解决并提交。图形化工具如`git mergetool`也可辅助解决冲突。
224 9
|
监控 Serverless 开发者
开发者如何用好云数据传输CDT
【10月更文挑战第22天】开发者如何用好云数据传输CDT
464 4
|
人工智能 分布式计算 数据可视化
大模型私有化部署全攻略:硬件需求、数据隐私、可解释性与维护成本挑战及解决方案详解,附示例代码助你轻松实现企业内部AI应用
【10月更文挑战第23天】随着人工智能技术的发展,大模型在各领域的应用日益广泛。然而,将其私有化部署到企业内部面临诸多挑战,如硬件资源需求高、数据隐私保护、模型可解释性差、更新维护成本高等。本文探讨了这些挑战,并提出了优化硬件配置、数据加密、可视化工具、自动化更新机制等解决方案,帮助企业顺利实现大模型的私有化部署。
990 1
|
算法 关系型数据库 MySQL
Mysql为何建议使用自增id作主键,有什么优点
Mysql为何建议使用自增id作主键,有什么优点
1678 1
|
运维 资源调度 定位技术
【技术大图】手把手教你搭建生信分析高性能计算平台
生物医药行业产生PB级海量数据,需专业生信分析平台支持。本技术地图涵盖平台搭建全流程:从架构设计、关键技术解析,到标准化分析流程介绍及部署优化策略,助力IT团队高效构建生信算力平台。立即下载完整版!
519 1
|
SQL 开发框架 前端开发
技术笔记:TPL详解、使用
技术笔记:TPL详解、使用
263 0
|
监控 关系型数据库 Java
SpringBoot【集成 01】Druid+Dynamic+Greenplum(实际上用的是PostgreSQL的驱动)及 dbType not support 问题处理(附hikari相关配置)
SpringBoot【集成 01】Druid+Dynamic+Greenplum(实际上用的是PostgreSQL的驱动)及 dbType not support 问题处理(附hikari相关配置)
758 0
|
缓存 JSON 前端开发
✨✨✨ ServiceWorker 让你的网页拥抱服务端的能力
ServiceWorker 是一个运行在浏览器背后的独立线程,它拥有访问网络的能力,可以用来实现缓存、消息推送、后台自动更新等功能,甚至可以用来实现一个完整的 Web 服务器。
557 0
✨✨✨ ServiceWorker 让你的网页拥抱服务端的能力
|
机器学习/深度学习 Serverless Python
​注意力机制中的掩码详解
注意力机制的掩码允许我们发送不同长度的批次数据一次性的发送到transformer中。在代码中是通过将所有序列填充到相同的长度,然后使用“attention_mask”张量来识别哪些令牌是填充的来做到这一点,本文将详细介绍这个掩码的原理和机制。
600 0