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 ...
随机推荐
- 纯CSS实现瀑布流布局
https://www.w3cplus.com/css/pure-css-create-masonry-layout.html
- How to solve the problem : "You have been logged on with a temporary profile"
/*By Jiangong SUN*/ I've encountered a problem in one server, which is : Every time I login into the ...
- SpringMVC由浅入深day01_4DispatcherSerlvet.properties
4 DispatcherSerlvet.properties DispathcerServlet作为springmvc的中央调度器存在,DispatcherServlet创建时会默认从Dispatch ...
- logback -- 配置详解 -- 一 -- <configuration>及子节点
附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...
- MySQL on Linux 部署手册
1. 背景 MySQL为开源数据库,因此可以基于源码实现安装.基于源码安装有更多的灵活性.也就是说我们可以针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码,根据不同的软件平台环境调整相关的编 ...
- Apache 配置文件详解
0x01 禁止目录列表访问 () 备份httpd.conf配置文件,修改内容: <Directory "/web"> Options FollowSymLinks Al ...
- PPT高手必须树立的十个理念
08 2014年08月 [263职场技巧]PPT高手必须树立的十个理念 理念一:文字是用来瞟的,不是读的 我们时不时听到这样的言论:“PPT很简单,就是把Word里的文字复制.粘贴呗.”这其实是对PP ...
- [C] scanf - 格式输入函数
scanf 函数称为格式输入函数,即把用户键盘输入的内容保存到指定的变量中. scanf 函数签名 scanf("格式控制字符串", 变量地址列表) scanf 函数是一个标准库函 ...
- 当进行make命令学习是出现error trying to exec 'cc1': execvp: No such file or directory
进行编译的时候总是会出现这种状况 error trying to exec 'cc1': execvp: No such file or directory 自己把程序改了又改,改的很简单之后还是出现 ...
- 解决layui下拉选择框只能选择不能手动输入文字
审查元素可以看到,layui的select下拉框是用input和div模拟出来的,所以,如下例子,我的解决方法是:$('.mySelect').find('input').removeAttr(&qu ...