2013-01-22 84 views
4

我想要獲取特定TeamProject的Web訪問頁面的URL。以編程方式獲取TFS團隊項目的WebAccess的URL

我發現使用調用GetHomeUrl(新的Uri(「MyprojectName」))的TswaClientHyperlinkService對象的一些示例,但我無法爲此提供正確的Uri值。也許我不明白如何格式化參數..

我知道如何獲得webaccess的基礎url,但我想要訪問特定Team Team Collection中的特定Team Project的頁面。

+0

@jessehouwing 謝謝您的回答,我也有同樣的想法,但ID沒有爲我工作。它會導致「參數異常:格式錯誤的工件URI:https:// mytfs/tfs/collection/project」。該URI是正確的,所以我不明白。 – ulfgebhardt

+0

是的,uri是完整且有效的 – ulfgebhardt

+0

您是否想要在SharePoint('http:// yourtfs:8080/tfs/ProjectCollection/Project')或WebAccess中獲取TeamProject站點的URL(例如'http:// TFS:8080/TFS /網絡/ Index.aspx的普瑞= vstfs%3A%2F%2F%2FClassification%2FTeamProject%2Fa33f88ab-839c-4ece-99e4-7fac491daed7')?我希望你正在使用TFS2010的API,對吧? – MikeR

回答

8

事實證明,GetHomeUrl方法預計vsts:// url,而不是您通常使用的項目集合的URL。下面的代碼可以用來得到URI:

var server = TfsConfigurationServerFactory.GetConfigurationServer(new Uri("http://localhost:8080/tfs" /* your tfs uri here */)); 
server.Authenticate(); 

var service = server.GetService<TswaClientHyperlinkService>(); 
var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://localhost:8080/tfs/DefaultCollection")); 
var cssService = projectCollection.GetService<ICommonStructureService3>(); 
var project = cssService.GetProjectFromName(/*YourProjectNameHere*/); 

var home = service.GetHomeUrl(new Uri(project.Uri)); 
+1

很好的答案,除了一點細節外,對我來說工作正常: 對於TFS2010,接口ICommonStructureService4不可用,它用於TFS2012。但ICommonStructureService3在TFS2012下正常工作 – ulfgebhardt

相關問題