Visual studio 从Resultlist的contextmenu调用命令时获取TFS工作项/WorkItemID

Visual studio 从Resultlist的contextmenu调用命令时获取TFS工作项/WorkItemID,visual-studio,visual-studio-2013,tfs,vsx,tfs-workitem,Visual Studio,Visual Studio 2013,Tfs,Vsx,Tfs Workitem,在visual studio 2013的扩展中,我为TFS WorkItem Contextmenu(GUID:ID={2DC8D6BB-916C-4B80-9C52-FD8FC371ACC2}:0x0206)放置了一个commandaction 右键单击工作项编辑器(直接打开的单个工作项)的背景或显示工作项编辑器的结果列表的下窗格,可以使用带有“我的命令”的contextmenu条目 现在我的问题是: 当直接从workitemeditor(单个打开的workitem)调用命令时,我仅通过检查_

在visual studio 2013的扩展中,我为TFS WorkItem Contextmenu(GUID:ID={2DC8D6BB-916C-4B80-9C52-FD8FC371ACC2}:0x0206)放置了一个commandaction

右键单击工作项编辑器(直接打开的单个工作项)的背景或显示工作项编辑器的结果列表的下窗格,可以使用带有“我的命令”的contextmenu条目

现在我的问题是: 当直接从workitemeditor(单个打开的workitem)调用命令时,我仅通过检查_dte.ActiveDocument.Name(.Fullname)来获取workitemid,但当queryresult列表处于运行状态时,则不进行此操作

确定,仅打开工作项时:

vstfs:///WorkItemTracking/WorkItem/4711
但如果我从ActiveDocument中的queryresult调用该命令,则ActiveDocument中没有工作项id-只有tfs url guid,如下所示:

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

从resultlist调用命令时,如何获取id或workitemobject?此外,还可以在TFS查询的结果列表中选择多个工作项-如何获得ID/工作项列表?

因此,我通过反向工程找到了一个工作解决方案:)

WorkItemStore service=tfstreamprojectcollection.GetService();
IWorkItemTrackingDocument activeDocument=this.GetActiveDocument();
IWorkItemDocument workItemDocument=activeDocument作为IWorkItemDocument;
IResultsDocument resultsDocument=activeDocument作为IResultsDocument;
if(workItemDocument!=null)
{
//工作项目
WriteLine(“工作项:{0}:{1}”,工作项文档.Item.Id,工作项文档.Item.Title);
}
if(resultsDocument!=null)
{
//结果列表
WriteLine(“结果列表:IDs{0}”,resultsDocument.SelectedItemIds);
}
        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);
        }