在上一篇《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. 源码分析八(org.springframework.util包之StringUtils类))

    一:spring框架util包中的StringUtils类主要是处理关于字符串 的功能方法,下面直接结合代码分析: //判断字符串是否为空,如果为nul或者""则返回true,否则 ...

  2. python通过标准输入读取内容,读取键盘输入的内容?接收用户输入?

    需求说明: 在交互式脚本中,需要用户手动输入内容,并对内容进行处理.在这里记录下通过 python的内置函数input()读取标注输入的内容.默认的标准输入是键盘. 操作过程: 1.通过input() ...

  3. scala akka Future 顺序执行 sequential execution

    对于 A => B => C 这种 future 之间的操作,akka 默认会自动的按照顺序执行,但对于数据库操作来说,我们希望几个操作顺序执行,就需要使用语法来声明 有两种声明 futu ...

  4. php查找之二分查找

    二分查找,往往是针对有序的数组进行查找,我们假设一个序列是数组有序,然后给定一个数字,查出它应该在这个数组中的排序位置 百度百科中讲到 二分查找也称折半查找(Binary Search),它是一种效率 ...

  5. CentOS下安装高版本GCC

    CentOS下安装高版本GCC 微信分享:   有时编译需要用到4.8以上版本的GCC,由于CentOS源没有提供高版本的GCC安装包,这时就不能通过安装包安装.通常的解决方案就是通过编译安装高版本的 ...

  6. CentOS6.8_64位手动安装MySQL5.6

    1.在CentOS6.8上安装mysql5.6 2.下载编译包 wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35-linu ...

  7. 【重要】U3D存放本地游戏存档——不同平台载入XML文件的方法——IOS MAC Android

    在PC上和IOS上读取XML文件的方式略有差别,经测试,IOS上不支持如下方法载入XML文件: XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load( ...

  8. [Git] 解决 insufficient permission for adding an object to repository database

    [环境] OS: CentOS 6.5 Git: 1.7.1 [症状描述] Git 中心仓库路径 ~/project.git,克隆库路径 ~/project.clone,克隆库中包含一个文件 ~/pr ...

  9. C++易混淆知识点整理

    // 1 /////////////////////////////////////////////////////////////////////// // 常量指针:,指针可修改,变量不可修改(只 ...

  10. Mybatis输入输出映射

    一.输入映射 1.传递简单类型 <select id="findUserById" parameterType="int" resultType=&quo ...