2016-08-01 46 views
0

我有下一个情况,而且我是堆栈。TFS 2015.按项目获取收藏名称

我正在使用Microsoft.TeamFoundation类从c#存储的查询中获取工作项。我知道服务器名称,项目名称和存储的查询名称。所以我可以执行存储的查询并接收所有WorkItem。

但比我必须创建一个直接链接到这个项目。根据文档,这个链接应该像

http:// ServerName:8080/tfs/CollectionName/ProjectName/_workitems/edit/Id 

所以,在执行查询之前,我知道ServerName,ProjectName和工作项的Id。但我无法在任何地方找到ProjectName。

所以我的问题是。如何,知道ServerName,ProjectName,WorkItemId和存储查询名称获取CollectionName?

或。如何创建知道ItemsId的工作项目链接?

P.S. GetArtifactUrl不是正确的方法。

感谢您的帮助!

+0

哪个URL你是否在浏览时通常使用浏览工作项目,当你正常工作与这个团队项目(提示看你的)?或者您是否尝试在所有团队项目集合中创建搜索内容? –

+0

你的问题可以用至少3种方式解释。您是在内部TFS服务器上还是在Visual Studio Team Services上尝试此操作? –

+0

我使用的是本地TFS服务器 – Vitalii

回答

1

害怕没有这样的API来实现这一点。然而,作为一种变通方法,您可以列出通过客户端API的所有集合的名称,如下图所示:

 Uri configurationServerUri = new Uri(URL); 
     TfsConfigurationServer configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(configurationServerUri); 
            ITeamProjectCollectionService tpcService = configurationServer.GetService<ITeamProjectCollectionService>(); 

    foreach (TeamProjectCollection tpc in tpcService.GetCollections()) 
           { 
            ListCollection.Add(tpc.Name); 
           } 

更多的方法供大家参考:

+0

此解决方案需要另一个lvl的访问权限。任何其他想法? – Vitalii

+0

也许你可以尝试通过TFS数据库找到它。 –

+0

@Patrick:不需要遍历多个数据库,因为tpc链接到数据库? –