TFS二次开发02——连接TFS
在上一篇《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的更多相关文章
- TFS二次开发系列索引
TFS二次开发11——标签(Label) TFS二次开发10——分组(Group)和成员(Member) TFS二次开发09——查看文件历史(QueryHistory) TFS二次开发08——分支(B ...
- TFS二次开发系列:七、TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)
在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一:连接TFS服务器,并且得到之后需要使用到的类方法. /// < ...
- TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)
TFS二次开发的数据统计以PBI.Bug.Sprint等为例(一) 在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一 ...
- TFS二次开发系列:三、TFS二次开发的第一个实例
首先我们需要认识TFS二次开发的两大获取服务对象的类. 他们分别为TfsConfigurationServer和TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS ...
- TFS二次开发、C#知识点、SQL知识总结目录
TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一个实例 TFS二次开发系列:四.TFS二次开发Wor ...
- TFS二次开发、C#知识点、SQL知识
TFS二次开发.C#知识点.SQL知识总结目录 TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一 ...
- TFS二次开发-基线文件管理器(5)-源码文件的读取
在上一节中,我们在保存标签之前,已经将勾选的文件路径保存到了Listbox中,这里只需要将保存的数据输出去为txt文档就可以做版本控制了. 版本文件比较复杂的是如何读取,也就是如何通过文件路径 ...
- TFS二次开发系列:五、工作项查询
本节将讲述如何查询工作项,用于二次开发中定义获取工作项列表. 使用WorkItemStore.Query方法进行查询工作项,其使用的语法和SQL语法类似: Select [标题] from worki ...
- TFS二次开发系列:二、TFS的安装
本系列的实例将采用TFS 2012+Sql Server2012编写. TFS的完整版本安装最好是在Windows server2008 64位以上版本中,其包括64位的SQL SERVER 2012 ...
随机推荐
- linux中date命令显示昨天的日期信息?以特定格式显示时间?
需求描述: linux环境中,在使用date命令的时候,可以通过-d指定日期的字符串来显示日期 操作过程: 1.通过date显示昨天的日期 [root@redhat6 ~]# date -d 'yes ...
- SpringBoot------JPA连接数据库
步骤: 1.在pom.xml文件下添加相应依赖包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=& ...
- 九度 1482:玛雅人的密码(BFS)
题目描述: 玛雅人有一种密码,如果字符串中出现连续的2012四个数字就能解开密码.给一个长度为N的字符串,(2=<N<=13)该字符串中只含有0,1,2三种数字,问这个字符串要移位几次才能 ...
- JAVA自定义注解 和 运行时靠 反射获取注解,解决 shiro 注解型权限因子获取问题
项目的权限分配,采用的是RBAC的设计模式.后台配置权限的时候,需要获取到所有的权限因子. 不经让我想起YII框架的SRBAC模块,还有以前的一个ecshop改造系统的权限配置方式,都采用的是PHP的 ...
- moment.js用法总结
moment(),获取当前时间 moment(string)把字符串变成moment时间格式 moment().format("YYYY-MM-DD HH:mm:ss"):规定时间 ...
- WebService之CXF
一.配置环境变量(Windows系统下要重启) 1.JAVA_HOME即JDK安装路径bin上一级,java -version命令验证 2.CXF_HOME即cxf安装路径bin上一级,cxf解压包下 ...
- 【ArcGIS】Web AppBuilder For ArcGIS 配置使用
一.Portal注册 2.Web AppBuilder配置 输入https://XXXX.YYYY.com.cn:3344/webappbuilder/打开配置界面 填写Portal的Url和AppI ...
- redis 缓存类型为map
// 获取分类列表,以及同类品牌 public Map<String, List> getCatalogInfo(Product product) { String key = Cache ...
- 从Eclipse转移到IntelliJ IDEA的一点心得
IntelliJ使用指南—— 深入理解IntelliJ的Web部署逻辑 Intellij IDEA 部署Web项目,解决 404 错误 Intellij IDEA快捷键的使用 本文转载地址 本人使用I ...
- JS 验证URL
var strVal = $("#urlText").val(); var Expression = "^((https|http|ftp|rtsp|mms)?://)& ...