我正在尝试(通过 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/