2016-06-17 78 views
0

如何通過查詢WorkItem存儲的修訂字段獲取WorkItem集合。如何通過其修訂字段查詢TFS工作項目

WorkItemCollection WIC = WIS.Query(
       " SELECT * " + 
       " FROM WorkItems " + 
       " WHERE [System.TeamProject]='project1' AND [Work Item Type]='Bug' AND [System.Revision.ChangedBy][email protected] ORDER BY [System.WorkItemType], [System.Id]"); 

我需要一個工作項收藏這樣,但在[System.Revision.ChangedBy]

產生的錯誤有沒有什麼辦法讓一個工作項目的集合,其修訂版changedby = @我

即 - 如果一個工作項的修訂工作,通過我改變了至少一個記錄,我需要在我的工作項目集合

我試過很多方法,但沒有找到一個解決辦法。

我嘗試通過獲取所有工作項目,然後嘗試找到每個工作項目的修訂值,但它需要很長時間才能執行。這就是爲什麼我需要得到工作項目集合時對其進行過濾,

感謝

回答

0

不,你不能在WIQL腳本中使用「System.Revision.ChangedBy」。而且你不能在API中使用「@me」宏,它只能在TFS Web Portal或Team Explorer中使用。

實現所需功能的方法與您所說的一樣,首先通過WIQL獲取工作項目,然後檢查所有項目的修訂版本。一些代碼供你參考:

 string tfsurl = "http://xxxxxxxxxx/"; 
     TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(tfsurl)); 
     WorkItemStore wis = ttpc.GetService<WorkItemStore>(); 
     WorkItemCollection wic = wis.Query(" SELECT * " + " FROM WorkItems " + "WHERE [System.TeamProject]='GitBuildRelease' AND [Work Item Type]='Bug'"); 
     List<WorkItem> wies = new List<WorkItem> { }; 
     foreach (WorkItem wi in wic) 
     { 
      foreach (Revision rev in wi.Revisions) 
      { 
       if (rev.Fields["Changed By"].Value.ToString() == "yourdisplayname") 
       { 
        wies.Add(rev.WorkItem); 
        break; 
       } 
      } 
     } 
+0

那就是我開發的,問題是它太慢了,當沒有工作項目增加時,無論如何thnks –

相關問題