#region 获取最新版本

        /// <summary>
/// 获取最新版本
/// </summary>
/// <param name="server_url">http://192.168.3.202:8080/tfs/projectcollection_single</param>
/// <param name="server_path">$/TP_publish/WebSln_Test_For_Publish/WebTest</param>
/// <param name="loacl_path">E:\Tfs\Project_Collection_Single</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
public static bool GetLastVersionByPath(string server_url, string loacl_path)
{
var teamProjects = new TfsTeamProjectCollection(new Uri(server_url));
var teamVersion = teamProjects.GetService<VersionControlServer>();
//Workspace workspace = teamVersion.GetWorkspace(loacl_path);
var workspace = teamVersion.GetWorkspace(System.Net.Dns.GetHostName(), teamVersion.AuthorizedUser);//参数1 工作区名称,默认电脑名称
workspace.Get(); return true;
}
#endregion

获取最新版本

#region 获取集合 解决方案 项目

        public void Init()
{
Uri tfsUri = new Uri(this.TfsUrl); //TFS配置服务获取所有项目的名称和所有的团队集合名称
TfsConfigurationServer configserver = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri);
ReadOnlyCollection<CatalogNode> collectNodes = configserver.CatalogNode.QueryChildren(new[] { CatalogResourceTypes.ProjectCollection }, false, CatalogQueryOptions.None); this.Collotion = new List<Model.Collotion>();
foreach (CatalogNode collect in collectNodes)
{
Guid collectid = new Guid(collect.Resource.Properties["InstanceId"]);
TfsTeamProjectCollection teamproject = configserver.GetTeamProjectCollection(collectid); var collotion = new Model.Collotion()//集合
{
Name = collect.Resource.DisplayName,
Path = teamproject.Uri.Host + "\\" + collect.Resource.DisplayName,
Url = teamproject.Uri.ToString(),
Solution = new List<Model.Solution>()
}; var teamVersion = teamproject.GetService<VersionControlServer>();
var workspace = teamVersion.GetWorkspace(Dns.GetHostName(), teamVersion.AuthorizedUser);
var folders = workspace.Folders; foreach (var folder in folders)
{
var items = teamVersion.GetItems(folder.ServerItem, RecursionType.Full).Items;
var arr = items.Where(ex => ex.ServerItem.EndsWith(".sln")).ToList(); foreach (var item in arr)//解决方案
{
if (teamVersion.GetItems(item.ServerItem.Substring(, item.ServerItem.LastIndexOf("/")), RecursionType.Full).Items.Where(ex => ex.ServerItem.EndsWith("Web.config")).Count() > )
{
var solution = new Model.Solution()
{
Name = Path.GetFileName(item.ServerItem),
Path = item.ServerItem,
Url = collotion.Url,
Project = new List<Model.Project>()
}; var dirPath = System.IO.Path.GetDirectoryName(item.ServerItem).Replace("\\", "/") + "/";
var projects = items.Where(ex => ex.ServerItem.StartsWith(dirPath) && ex.ServerItem.EndsWith(".csproj")).ToList();
foreach (var project in projects)//项目
{
if (teamVersion.GetItems(project.ServerItem.Substring(, project.ServerItem.LastIndexOf("/")), RecursionType.Full).Items.Where(ex => ex.ServerItem.EndsWith("Web.config")).Count() > )
{
solution.Project.Add(new Model.Project()
{
Name = Path.GetFileName(project.ServerItem),
Path = project.ServerItem,
Url = collotion.Url,
mappingPath = workspace.GetWorkingFolderForServerItem(project.ServerItem).LocalItem
});
}
}
collotion.Solution.Add(solution);
}
}
}
Collotion.Add(collotion);
}
}
#endregion

获取集合 解决方案 项目

代码下载:

没找到上传文件的地方:qq 674613047

c# 获取TFS结构 文件的更多相关文章

  1. 如何通过SQL注入获取服务器本地文件

    写在前面的话 SQL注入可以称得上是最臭名昭著的安全漏洞了,而SQL注入漏洞也已经给整个网络世界造成了巨大的破坏.针对SQL漏洞,研究人员也已经开发出了多种不同的利用技术来实施攻击,包括非法访问存储在 ...

  2. struts文件上传,获取文件名和文件类型

    struts文件上传,获取文件名和文件类型   Action中还有两个属 性:uploadFileName和uploadContentType,这两个属性分别用于封装上传文件的文件名.文件类型.这是S ...

  3. Java获取Web服务器文件

    Java获取Web服务器文件 如果获取的是服务器上某个目录下的有关文件,就相对比较容易,可以设定死绝对目录,但是如果不能设定死绝对目录,也不确定web服务器的安装目录,可以考虑如下两种方式: 方法一: ...

  4. ie下获取上传文件全路径

    ie下获取上传文件全路径,3.5之后的火狐是没法获取上传文件全路径的 /*获取上传文件路径*/ function getFilePath(obj) { var form = $(this).paren ...

  5. OpenFileDialog获取文件名和文件路径问题

    OpenFileDialog获取文件名和文件路径问题(转) 转自:http://blog.sina.com.cn/s/blog_7511914e0101cbjn.html System.IO.Path ...

  6. Greenplum获取表结构

    最近在折腾greenplum,遇到一个蛋疼的问题,那就是获取表结构,也就是建表语句.大家都知道在MySQL里面是非常easy的,show create table table_name 就搞定了,在g ...

  7. Android之获取string.xml文件里面的方法

    获取string.xml文件里面的方法 在此做个笔记: 1.在AndroidManifest.xml与layout等xml文件里: android:text="@string/resourc ...

  8. spring java 获取webapp下文件路径

    spring java 获取webapp下文件路径 @RequestMapping("/act/worldcup_schedule_time/imgdownload") @Resp ...

  9. java 获取classpath下文件多种方式

    java 获取classpath下文件多种方式 一:properties下配置 在resources下定义server.properties register.jks.path=classpath\: ...

随机推荐

  1. 安卓自定义日期控件(仿QQ,IOS7)

    还记得上篇:高大上的安卓日期时间选择器,本篇是根据上篇修改而来,先看下qq中日期选择的效果: 鉴于目前还没有相似的开源日期控件,因此本人花费了一些时间修改了下之前的日期控件,效果如图: 虽说相似度不是 ...

  2. Android开发_TextView跑马灯

    关键代码: android:singleLine="true" android:ellipsize="marquee" android:focusable=&q ...

  3. Android使用局和数据实现天气项目-android学习之旅(十二)

    1.首先注册聚合数据账号,下载相应的sdk 2.导入jar包和 so文件 配置Application,初始化sdk <application //自己新建的application类 androi ...

  4. Linux_Oracle命令大全

     一,启动 1.#su - oracle              切换到oracle用户且切换到它的环境 2.$lsnrctl status           查看监听及数据库状态 3.$ls ...

  5. React Native入门教程2 -- 基本组件使用及样式

    在上一篇文章中,我们学会了如何搭建React Native的环境(React Native入门教程(笔记) 1 – 开发环境搭建),不知道你们是否搭建好了呢,如果还没有,那么快动起小手,来体验RN带给 ...

  6. JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止

    JAVA之旅(十五)--多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止 我们接着多线程讲 一.生产者和消费者 什么是生产者和消费者?我们 ...

  7. 谈谈Ext JS的组件——布局的使用方法续一

    盒子布局 盒子布局主要作用是以水平(Ext.layout.container.HBox)或垂直方式(Ext.layout.container.VBox)来划分容器区域.这也是比较常有的布局方式. 使用 ...

  8. Android官方网站

     http://wear.techbrood.com/sdk/installing/index.html?pkg=tools

  9. EventBus 最简易的使用方式

    呃,要跟上时代的步伐,所以来学习一下EventBus(话说好像现在学也已经算是跟不上了..嘛..不管了,一步一步往前追,应该还来得及吧). 转载请注明出处:http://blog.csdn.net/w ...

  10. 【翻译】ExtJS vs AngularJS

    原文:ExtJS vs AngularJS ExtJS和AngularJS是两个行业内领先的富界面开发框架.TechFerry有机会使用Ext JS和Angular JS来开发多个富界面的单页面应用程 ...