我在TFS中有一个Visual Studio 2010 C#项目。我想在特定日期之前从TFS下载所有文件。
使用C#中的TFS API执行此操作的最佳方法是什么? 我做了什么:从TFS获取所有项目项目,为每个项目检查入住日期并下载它。不幸的是,我有很多这些文件,需要很长时间才能全部下载,然后按日期过滤它们。
我的代码:
var tfs = RegisteredTfsConnections.GetProjectCollection(new Uri("MyTfsUri"));
var projects = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfs);
var versionControl = (VersionControlServer)projects.GetService(typeof(VersionControlServer));
ItemSet itemsSqlScripts = versionControl.GetItems("Path in TFS", RecursionType.Full);
foreach (var item in itemsSqlScripts.Items)
{
if (item.CheckinDate > date)
{
item.DownloadFile("C:\\SqlScripts\\" + Path.GetFileName(item.ServerItem));
}
}
我想要这样的事情:
ItemSet itemsSqlScripts = versionControl.GetItems("Path in TFS", RecursionType.Full, and here parameter filter -> for example new DateTime(2015, 5, 1, 0, 0, 0);
我观看并阅读:
tfs.GetService<VersionControlServer>().QueryHistory(...)
但我不知道如何使用此功能来做我想要的事情:(
请帮助
答案 0 :(得分:0)
您可以这样做:
DateTime targetDate = DateTime.Now.AddDays(-1);
string downloadLocation;
var changes = versionControl.QueryHistory(
"$/MyProject",
VersionSpec.Latest,
0,
RecursionType.Full,
null,
new DateVersionSpec(targetDate),
VersionSpec.Latest,
int.MaxValue,
true,
false);
foreach (Changeset changeset in changes)
{
foreach (var change in changeset.Changes.Where(c => c.Item.ItemType == ItemType.File))
{
change.Item.DownloadFile(downloadLocation + change.Item.ServerItem.Substring(2));
}
}