2015-01-15 2 views
0

В расширении для visual studio 2013 я разместил командование для TFS WorkItem Contextmenu (GUID: ID = {2DC8D6BB-916C-4B80-9C52-FD8FC371ACC2}: 0x0206)Получите рабочий элемент TFS/WorkItemID, когда команда вызвана из контекстного меню в списке результатов

запись в контекстном меню с моей командой доступна по правому экрану в фоновом режиме редактора рабочих элементов (прямое открытое одиночное произведение) или в нижней панели списка результатов, где отображается workitemedior.

теперь моя проблема: я только получить WorkItemID путем проверки _dte.ActiveDocument.Name (.Fullname), когда команда была вызвана из workitemeditor непосредственно (один открыт WorkItem), но не тогда, когда список queryresult находится в игре.

нормально, когда открыт только WorkItem:

vstfs:///WorkItemTracking/WorkItem/4711 

, но если я вызовите команду из queryresult в ActiveDocument нет WorkItem идентификатора в ActiveDocument - только TFS URL справ ведьма выглядит следующим образом:

vstfs:///WorkItemTracking/Results/76ec1234-0000-00000-1234-f82d48b00000 

Как я могу получить id или workitemobject, когда команда вызывается из результирующего списка? Кроме того, в результирующем списке TFS-запроса можно выбрать несколько рабочих элементов - как я могу получить список идентификаторов/рабочих элементов?

ответ

0

Так что я нашел рабочее решение по реинжинирингу :)

 WorkItemStore service = tfsTeamProjectCollection.GetService<WorkItemStore>(); 
     IWorkItemTrackingDocument activeDocument = this.GetActiveDocument(); 
     IWorkItemDocument workItemDocument = activeDocument as IWorkItemDocument; 
     IResultsDocument resultsDocument = activeDocument as IResultsDocument; 

     if (workItemDocument != null) 
     { 
      // Workitem 
      Debug.WriteLine("A Workitem: {0}: {1}", workItemDocument.Item.Id, workItemDocument.Item.Title); 
     } 

     if (resultsDocument != null) 
     { 
      // Resultlist 
      Debug.WriteLine("A Resultlist: IDs {0}", resultsDocument.SelectedItemIds); 
     }