在上一篇《TFS二次开发01——TeamProjectsPicher》介绍了  TeamProjectsPicher 对象,使用该对象可以很简单的实现连接TFS。

但是如果我们要实现自定义的UI客户端 或者我们要做一个非WinForm版的TFS客户端(比如Web 或者WPF),那么TeamProjectsPicher 对象就无能为力了。那我们就只能自己实现了。

这篇文章主要介绍:

1:连接TFS Server

2:获取所有TfsTeamProjectCollection

3:获取某个TfsTeamProjectCollection 下的所有Team Project

添加命名空间

using Microsoft.TeamFoundation.Client;

using Microsoft.TeamFoundation.Framework.Client;

using Microsoft.TeamFoundation.Framework.Common;

using Microsoft.TeamFoundation.VersionControl.Client;

1:连接TFS服务器

       //想要连接TFS,肯定先要知道TFS 的地址
string tfsServerURL = "http://192.168.83.70:8080/tfs";
Uri configurationServerUri = new Uri(tfsServerURL);
//与TFS服务器连接
TfsConfigurationServer configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(configurationServerUri);

2:获取所有团队项目结合(TfsTeamProjectCollection)

        /// <summary>
/// 查询所有指定TFS服务上的所有TeamProjectCollection 信息
/// </summary>
/// <param name="tfsServerURL"></param>
/// <returns></returns>
List<TfsTeamProjectCollection> GetAllTeamProjectCollection(string tfsServerURL)
{ Uri configurationServerUri = new Uri(tfsServerURL); //与TFS服务器连接
TfsConfigurationServer configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(configurationServerUri); List<TfsTeamProjectCollection> lst = new List<TfsTeamProjectCollection>();
//TFS目录节点
CatalogNode configurationServerNode = configurationServer.CatalogNode; //查询当前TFS下的所有TeamProjectCollection
ReadOnlyCollection<CatalogNode> tpcNodes = configurationServerNode.QueryChildren(
new Guid[] { CatalogResourceTypes.ProjectCollection },
false,
CatalogQueryOptions.None); //遍历每一个TeamProjectCollection 节点
foreach (CatalogNode tpcNode in tpcNodes)
{
//获取 当前 team project collection 名称.
String displayName = tpcNode.Resource.DisplayName; // 获得 当前 team project collection 描述.
String description = tpcNode.Resource.Description; //获取当前 team project collection 的描述.
ServiceDefinition tpcServiceDefinition = tpcNode.Resource.ServiceReferences["Location"];
ILocationService configLocationService = configurationServer.GetService<ILocationService>();
Uri tpcUri = new Uri(configLocationService.LocationForCurrentConnection(tpcServiceDefinition)); // 真正的连接到team project collection
TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tpcUri);
lst.Add(tpc);
} return lst;
}

TfsTeamProjectCollection 对象常用属性:

TfsTeamProjectCollection. CatalogNode. Resource.DisplayName     // team project collection 名称.

TfsTeamProjectCollection .Name                              // team project collection 名称.

TfsTeamProjectCollection .Uri                                // team project collection Url 信息.

TfsTeamProjectCollection. CatalogNode. Resource. Description     // team project collection 描述.

3:获取某个TfsTeamProjectCollection 下的所有Team Project信息

      TeamProject[] GetAllTeamProject(TfsTeamProjectCollection tpc)
{
List<TeamProject> lst = new List<TeamProject>();
VersionControlServer version = tpc.GetService(typeof(VersionControlServer)) as VersionControlServer;
return version.GetAllTeamProjects(true);
}

由于我们在实际应用中连接到TFS时,只能连接一个TfsTeamProjectCollection 。所以如果我们知道了该TfsTeamProjectCollection的Url 那么就可以免去上面的步骤,代码乳如下:

        /// <summary>
/// 获取所有的TeamProject
/// </summary>
/// <returns></returns>
TeamProject[] GetAllTeamProject(string tpcURL)
{
//连接到team project collection ,使用此方式直接连接TFS时 TfsTeamProjectCollection. CatalogNode 为 none 。
//因为在使用时通常是只连接到一个Team project collection ,所有更多的时候我们使用这种方式连接TFS
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(tpcURL));
//版本控制
VersionControlServer version = tpc.GetService(typeof(VersionControlServer)) as VersionControlServer;
//获取所有TeamProject
return version.GetAllTeamProjects(true);
}

结合上面的代码可以实现如下图所示的效果:

4:创建团队项目

            TeamProjectFolderOptions project = new TeamProjectFolderOptions("project1");

            version.CreateTeamProjectFolder(project);

TFS二次开发02——连接TFS的更多相关文章

  1. TFS二次开发系列索引

    TFS二次开发11——标签(Label) TFS二次开发10——分组(Group)和成员(Member) TFS二次开发09——查看文件历史(QueryHistory) TFS二次开发08——分支(B ...

  2. TFS二次开发系列:七、TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)

    在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一:连接TFS服务器,并且得到之后需要使用到的类方法. /// < ...

  3. TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)

    TFS二次开发的数据统计以PBI.Bug.Sprint等为例(一) 在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一 ...

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

    首先我们需要认识TFS二次开发的两大获取服务对象的类. 他们分别为TfsConfigurationServer和TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS ...

  5. TFS二次开发、C#知识点、SQL知识总结目录

    TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一个实例 TFS二次开发系列:四.TFS二次开发Wor ...

  6. TFS二次开发、C#知识点、SQL知识

    TFS二次开发.C#知识点.SQL知识总结目录   TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一 ...

  7. TFS二次开发-基线文件管理器(5)-源码文件的读取

      在上一节中,我们在保存标签之前,已经将勾选的文件路径保存到了Listbox中,这里只需要将保存的数据输出去为txt文档就可以做版本控制了.   版本文件比较复杂的是如何读取,也就是如何通过文件路径 ...

  8. TFS二次开发系列:五、工作项查询

    本节将讲述如何查询工作项,用于二次开发中定义获取工作项列表. 使用WorkItemStore.Query方法进行查询工作项,其使用的语法和SQL语法类似: Select [标题] from worki ...

  9. TFS二次开发系列:二、TFS的安装

    本系列的实例将采用TFS 2012+Sql Server2012编写. TFS的完整版本安装最好是在Windows server2008 64位以上版本中,其包括64位的SQL SERVER 2012 ...

随机推荐

  1. SQL优化|Java面试题

    转载:https://www.cnblogs.com/Jacck/p/8030455.html 数据库的优化问题 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂 ...

  2. C++开发--在Visual Studio2013中使用boost::split()编译过程中出现error C4996

    Visual Studio is being overly cautious.  In debug mode, visual studio uses something called "Ch ...

  3. Splash plugins_enabled 属性

    plugins_enabled属性可以控制浏览器插件(如 Flash 插件)是否开启.默认情况下,此属性是 false ,表示不开启. function main(splash, args) spla ...

  4. 使用 Json 文件存储

    将爬取到的数据以 Json 文件形式存储: import json import requests req = requests.get('http://www.baidu.com/') data = ...

  5. Ansible的Playbook的编写

    在Ansible中,将各个模块组合起来成为一个YAML格式的配置文件,这个配置文件叫做Playbook, Playbook和模块的关系类似于shell脚本和Linux命令之间的关系. Playbook ...

  6. MVC中的一些不同之处(WebForm)

    一. 路由重定向 /// <summary> /// 路由重定向 /// </summary> /// <returns></returns> publ ...

  7. fastcgi协议之一:定义

    参考 深入理解fastcgi协议以及在php中的实现 https://mengkang.net/668.html fastcgi协议规范内容 http://andylin02.iteye.com/bl ...

  8. 《C++ Primer Plus》第16章 string类和标准模板库 学习笔记

    C++提供了一组功能强大的库,这些库提供了很多常见编程问题的解决方案以及简化其他问题的工具string类为将字符串作为对象来处理提供了一种方便的方法.string类提供了自动内存管理动能以及众多处理字 ...

  9. audio_policy.conf说明(翻译)

    自己记着当笔记,水平有限,仅供参考 # # Audio policy configuration for generic device builds (goldfish audio HAL - emu ...

  10. Linux下的XAMPP基本配置技巧(设置虚拟主机、添加FTP账户等)

    xampp安装好之后就只有一个默认站点及一个默认nobody的ftp账户,这显然不符合我们平时的需求了,那么下面就来讲一下如何设置并管理多个虚拟主机及ftp账户了,至于xampp的安装不在此讨论范围, ...