2011-06-24 45 views
6

我們正在編程生成部署電子郵件,它基於自上次部署構建以來的變更集和相關工作項的歷史記錄。它們看起來有點像Visual Studio內部的構建摘要信息(但有許多構建組合在一起)。如何將TFS項目URL映射到可查看的東西

似乎有在有用的數據的網址(例如vstfs:///VersionControl/Changeset/205151)但作爲新的TFS SDK我不,如果/如何映射到觀看項(例如:http:// tfsserver:端口/ somepath/......)。 Visual Studio中的構建摘要鏈接是可點擊的,但是它們是否是VS-only鏈接?

如果可能的話,我們希望在打開相關項目的電子郵件中包含鏈接(在瀏覽器中?),所以我想我需要知道TFS路徑是否可以瀏覽網頁,如果有,如何?

意見建議。謝謝。

回答

6
+6

這是TFS 2005和2008中工作項目跟蹤Web服務的URL。(2010年,您可能希望使用http:// server:port/tfs/CollectionName/...而不是http:// server:port /。)這將提供有限的查看工作項目的權限。同樣,您可以使用http:// server:port/VersionControl/Changeset.aspx?artifactMoniker = ...來查看變更集。但是,TFS Web Access可能優於Web服務提供的只讀視圖。 –

+1

作品一種享受。非常感謝。 @Edward Thomson:+1感謝您的額外變更集版本。作品 –

3

的vstfs鏈接被稱爲「神器標識」和是內部數據,預計將只能通過TFS消耗TFS客戶。 TFS客戶端將解析該數據並確定如何顯示該數據。對於您提供的變更集鏈接,富客戶端將打開一個包含變更集詳細信息的對話框。 Web客戶端會將該鏈接轉換爲URI。各種TFS庫能夠使用該ID爲您提供更多關於此工件的數據。

如果要創建自己的TFS Web Access鏈接,嚴格正確的方法是查詢服務器上的某些信息。一旦擁有了TswaClientHyperlinkService,就可以查詢各種服務的Web訪問URI,例如查看變更集或查看工作項目。一些示例顯示在Martin Woodward's blog上。

13

這是我已被用來訪問工作項目的URL,

=>http://ServerName:PortNumber/tfs/web/wi.aspx?id=xxidxx

編輯 我已指定確實與2010 TFS工作的格式它基本上生成對路徑Web視圖中的工作項目。點擊它可以在Web視圖中打開工作項目。

作爲替代方案,您也可以通過編程方式獲得可導航的網址。

var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("TFSURL")); 
var versionControl = tfs.GetService<ICommonStructureService>(); 

var projects = versionControl.ListAllProjects(); 

var myService = tfs.GetService<TswaClientHyperlinkService>(); 

var myUrl = myService.GetChangesetDetailsUrl(21); 

所以,服務「TswaClientHyperlinkService」是微軟TFS超鏈接服務。這將爲絕對路徑,相對路徑,路徑和查詢生成url格式,等等等等。

HTH,

乾杯,塔倫

PS - 我恨是錯的!哈哈哈...... enter image description here

編輯 而且,由於你的情況,你有URI可用,並且您已經使用TFS API中,這兩行代碼會做的伎倆。

var testManagementService = tfs.GetService<ILinking>(); 
var testControllers = testManagementService.GetArtifactUrl(@"vstfs:///VersionControl/Changeset/205151"); 

這將產生,https://ServerName:PortNumber/defaultcollection/VersionControl/Changeset.aspx?artifactMoniker=205151

HTH,

乾杯,塔倫

+0

tfs/web/wi.aspx並不等同於我們的2008 TFS服務器上的有效頁面。 Daniel的工作項目解決方案的工作方式與Edward所做的變更補充一樣。 –

+0

你剛剛救了我一天,謝謝! :) – casaout

0

在TFS2012,附加pcguid URL參數需要存在。這裏是新的格式,擴展由@TarunArora給出了很好的解決方案:

http://ServerName:PortNumber/tfs/web/wi.aspx?pcguid=xxguidxx&id=xxidxx

This blog post介紹如何通過Visual Studio中找到pcguid

但是,如果你像我一樣正在嘗試使用TFS沒有安裝Visual Studio(!不要問),這是一個使用基於瀏覽器的TFS接口的選擇:

  1. 轉到「開放問題「
  2. 單擊工作項窗格右上角的看起來像信封的按鈕(」將查詢作爲電子郵件發送「)。
  3. 右鍵單擊電子郵件中的鏈接之一併複製鏈接位置
  4. 取消電子郵件而不發送郵件。
  5. 將鏈接位置粘貼到文本編輯器中,並提取pcguid值。
相關問題