c# - 如何通过查询获得某人工作过的所有工作项?

标签 c# tfs tfs-sdk

我正在尝试(通过 wql)获取所有已完成的任务,这意味着有人为这些任务记录了时间。 现在,我在内存中这样做:

foreach (WorkItem wi in workItems)
        {
            foreach (Revision item in wi.Revisions)
            {
                try
                {
                     // elided...
                     myTask.TimeSpent = item.Fields["Completed Work"].Value == null ?
                     0 : (double)item.Fields["Completed Work"].Value;
                }
            }
         }

我希望能够像这样在初始查询中执行此操作:

 var query = "SELECT [System.Id] FROM WorkItems
 WHERE [System.TeamProject] = '@project'
 and [System.WorkItemType]='Task' *and [System.WorkItem.Completed_Work] <> 0*";

我尝试了不同的方法来钻取“已完成的工作”字段: [System.WorkItemRevisions.Completed_Work],<br/> [System.WorkItem[Revisions[Completed_Work]]],<br/> [System.WorkItem.Revisions.[Completed Work]]

但我总是遇到异常。 有什么想法吗?

最佳答案

问题是您为 CompletedWork 使用的引用名称,另一个问题是 @project,因为该语句不是在项目上下文中调用的,因此@project 不应该工作。这是我如何使用它的示例:

string query = "SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '" + SelectedTeamProject + "' AND [System.WorkItemType]='Task' AND [Microsoft.VSTS.Scheduling.CompletedWork] <> 0";

如果安装了 TFS Power Tools,您可以通过检查 Visual Studio 中的 Work Item Type Definition (WITD) 来获取正确的引用名称:

Tools-> Process Editor-> Work Item Types-> Open WIT from Server
Choose the Team Project Collection and the TeamProject where the Task is in 
Open the Task definition and watch out for the Completed Work field and check the reference name for it

关于c# - 如何通过查询获得某人工作过的所有工作项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14686578/

相关文章:

c# - TFS Force 通过 SDK 以编程方式获取

tfs - 检测 Team Foundation Server 2010 中的团队项目集合

c# - 从表达式调用方法

c# - 记录Web服务启动/停止

c# - 如何将新行放入 wpf TextBlock 控件中?

特定方法的 TFS 历史记录

tfs - 如何使用命令行客户端将 TFS 工作区映射到本地

visual-studio - Visual Studio - 找不到页面

c# - 从 TFS 获取当前迭代路径

c# - 从 WPF 中删除额外的垂直空白