2010-05-25 98 views

回答

1

最好的办法是使用TFS DLL和API,它位于http://msdn.microsoft.com/en-us/library/bb130146(VS.80).aspxhttp://msdn.microsoft.com/en-us/library/bb130334(v=VS.80).aspx。据我所知,直接打网页服务是令人不悦的。

要获得项目清单,我认为有多种方法可以做到这一点。我发布了我使用的代码:使用GetServer方法获取项目集合,然后通过ListProjects()方法列出。我需要这样做,因为我需要获取区域和迭代。这需要Microsoft.TeamFoundation.Client命名空间。

var tfs = TeamFoundationServerFactory.GetServer(Constants.TEAMFOUNDSERVER); 
var projectCollection = (ICommonStructureService)tfs.GetService(typeof(ICommonStructureService)); 
foreach (var projectInfo in projectCollection.ListProjects()) 
{ 
    //do stuff here 
} 
+1

谢谢,我知道这是很好的使用TFS的DLL。但我在Ubuntu上开发,所以我想我没有更好的选择来沟通TFS ...如果有一个请让我知道 – 2010-05-25 16:09:40

+0

我同意Robaticus - 在.NET中编写自己的Web服务层并执行这个。否则,当微软改变他们的web服务层时,你需要做很多返工。 或者,与单声道?我相信这些DLL是托管代码。 – bryanjonker 2010-05-25 17:49:26

5

我同意bryanjonker。不要直接调用web服务,这是真的保留供内部使用。创建您自己的访问层并调用API。

您也可以使用对象模型来访问ICommonStructureService。我最近开始使用它,并发现它更干净。下面的代码和bryanjonker的例子是一样的:

var tfs = TeamFoundationServerFactory.GetServer(serverUri); 

    var projectCollection = tfs.GetService<ICommonStructureService>(); 

    foreach (var projectInfo in projectCollection.ListProjects()) 
    { 
     listBox1.Items.Add(projectInfo.Name); 
    } 
+0

谢谢,我知道使用TFS DLL是很好的。但是我在Ubuntu上开发,所以我想我没有更好的选择来沟通TFS ...如果有人请告诉我 – 2010-05-25 16:09:21

+0

您可以为自己创建一个位于TFS服务器上的Web服务层吗? – Robaticus 2010-05-25 17:19:51

+0

@Prashant:你在Ubuntu中使用什么语言? – 2012-06-12 22:25:48