【发布时间】:2012-02-17 12:51:43
【问题描述】:
我想查询在特定日期编辑过的 TFS 工作项。使用 Changed Date = @Today - 1 ,我可以获得昨天更改的工作项,但如果我今天更改工作项并查询昨天所做的更改,它将被忽略,因为它的 更改日期 是今天。所以我想通过历史搜索查询在某个 x 日更改的工作项
从评论编辑:
我会更清楚。我想检查某个字段(例如 System.AssignedTo 字段)是否在给定日期更改。
【问题讨论】:
标签: tfs
我想查询在特定日期编辑过的 TFS 工作项。使用 Changed Date = @Today - 1 ,我可以获得昨天更改的工作项,但如果我今天更改工作项并查询昨天所做的更改,它将被忽略,因为它的 更改日期 是今天。所以我想通过历史搜索查询在某个 x 日更改的工作项
从评论编辑:
我会更清楚。我想检查某个字段(例如 System.AssignedTo 字段)是否在给定日期更改。
【问题讨论】:
标签: tfs
我认为使用普通查询或 WIQL 是不可能的。
您可以使用 TFS API 获取结果。这是一个查询,可以为您提供所需的结果。您只需要添加一些对某些 TFS 程序集的引用即可。
void Main()
{
const String CollectionAddress = "http://mytfsserver/tfs/MyCollection";
using (var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(CollectionAddress)))
{
var server = tfs.GetService<WorkItemStore>();
var changes =
server.Query("select * from WorkItems where [System.ChangedDate] = @Today")
.Cast<WorkItem>()
.SelectMany(wi =>
wi.Revisions
.Cast<Revision>()
.SelectMany(r =>
r.Fields
.Cast<Field>()
.Where(f => !String.IsNullOrEmpty(f.OriginalValue as String) && f.Value != f.OriginalValue && f.ReferenceName == "System.AssignedTo")
.Select(f => new { wi.Id, f.OriginalValue, f.Value, f.ReferenceName, })))
.Dump();
}
}
【讨论】: