在上一篇《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. MTK 时区修改

    1.修改packages/apps/Settings/res/xml-xx-xx/timezones.xml (xx-xx表示不同的语言和区域),添加下面的内容:     <!-- timezo ...

  2. Spring IOC-ContextLoaderListener

    [spring version : 4.1.6.RELEASE] 使用spring的项目中,一般都会在web.xml中配置ContextLoaderListener,它就是spring ioc 的入口 ...

  3. 【Android】amr文件时长

    一.文件时长获取 String curAudioFile = “XXX.amr”; MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.s ...

  4. >>和<<<区别

    1.>>表示右移(有符号右移),如:15>>2的结果是3,-31>>3的结果是-4,左边以该数的符号位补充,移出的部分将被抛弃. 转为二进制的形式可能更好理解(省略 ...

  5. 【安全开发】C/C++安全编码规范

    C本质上是不安全的编程语言.例如如果不谨慎使用的话,其大多数标准的字符串库函数有可能被用来进行缓冲区攻击或者格式字符串攻击.但是,由于其灵活性.快速和相对容易掌握,它是一个广泛使用的编程语言.下面是针 ...

  6. Fragment获取Activity,Activity获取Fragment

    在界面布局文件中使用<fragment>元素添加Fragment时,可以为<fragment>元素指定android:id或android:tag属性,这两个属性都可用于标识该 ...

  7. 安装ubuntu后,你的屏幕尺寸太小,无法设置,该怎么解决

    安装完虚拟机之后,你的Ubuntu可能会在尺寸很小,(这种情况可能有,可能没有) 想要点击设置,选中Display里的分辨率下拉框,但是却因为这个窗口太大,无法点击apply按钮.悲剧啦!!! Ctr ...

  8. Visual C++中去除警告

    在编程中,编译器警告的意思是提问程序员:如果这样做将会出现意外的错误,你确定要这样做吗? 在很多情况下,我们写程序的时候会出现一些警告,而这些警告我们都知道这样做的确是需要的并且程序中多处出现这种做法 ...

  9. 【Java基础】System的arraycopy方法拷贝数组

    一.在System类中查看方法的定义 二.示例 public class SystemArrayCopyTest { /** * @Description: System的arrayCopy方法测试 ...

  10. Entity Framework6的在线下载安装

    Entity Framework6的在线下载安装 Entity Framework 简单介绍: 看名字就知道肯定是关于数据模型的…… Entity Framework:微软官方提供的ORM()工具,O ...