首页 / C# / c# – 获取最新方法,始终重新下载
c# – 获取最新方法,始终重新下载
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 获取最新方法,始终重新下载,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2845字,纯文字阅读大概需要5分钟。
内容图文
![c# – 获取最新方法,始终重新下载](/upload/InfoBanner/zyjiaocheng/816/f4edd233cf704dd886f0317dded8d5ac.jpg)
我正在使用TFS SDK,我有一个方法,可以获得最新版本的项目.但是当我调用方法时,它总是重新下载文件.这也需要很长时间.
我试过了,我得到了changeSet,我比较了特别的项目.如果项目有更改,请下载它.但这种方式也需要很长时间.
这是我没有检查changeSet的第一个代码
ItemSet items = sourceControl.GetItems(itemPath, VersionSpec.Latest, RecursionType.Full);
foreach (Item item in items.Items)
{
localName = item.ServerItem.ToString();
localName = localName.Substring(2, (localName.Length - 2)).Replace("/", "\\");
switch (item.ItemType)
{
case ItemType.Any:
throw new ArgumentOutOfRangeException("ItemType returned was Any; expected File or Folder.");
case ItemType.File:
item.DownloadFile("D:\\WORK\\Tries\\"+localName);
break;
case ItemType.Folder:
Directory.CreateDirectory("D:\\WORK\\Tries\\"+localName);
break;
}
}
这是我检查变更集的新代码
ItemSet items = sourceControl.GetItems(itemPath, VersionSpec.Latest, RecursionType.Full);
foreach (Item item in items.Items)
{
localName = item.ServerItem.ToString();
localName = localName.Substring(2, (localName.Length - 2)).Replace("/", "\\");
var histories = sourceControl.QueryHistory(itemPath, VersionSpec.Latest, 0, RecursionType.OneLevel, null, null, null, Int32.MaxValue, true, false, true);
bool check = false;
foreach (Changeset history in histories)
{
foreach (Change change in history.Changes)
{
if (change.Item.Equals(item))
check = true;
}
}
switch (item.ItemType)
{
case ItemType.Any:
throw new ArgumentOutOfRangeException("ItemType returned was Any; expected File or Folder.");
case ItemType.File:
if(check)
item.DownloadFile("D:\\WORK\\Tries\\"+localName);
break;
case ItemType.Folder:
if(!Directory.Exists("D:\\WORK\\Tries\\" + localName))
Directory.CreateDirectory("D:\\WORK\\Tries\\"+localName);
break;
}
}
有人有建议吗?谢谢.
编辑:我这样解决了问题:
String ServerFolder = itemPath; // start with "$/ + serverFolder path"
itemPath = itemPath.Substring(2, (itemPath.Length - 2)).Replace("/", "\\");
String LocalFolder = @"D:\WORK\"+itemPath;
WorkingFolder workfolder = new WorkingFolder(ServerFolder, LocalFolder);
workspace.CreateMapping(workfolder);
workspace.Get(VersionSpec.Latest,GetOptions.Overwrite);
解决方法:
如果您尝试将工作区更新为最新更改,则实际上调用了错误的方法. VersionControlServer.GetItems()是一种要求服务器列出它具有的项目的方法.它总会告诉你相同的答案.
如果您尝试将工作区中的项更新为最新项,则需要获取相应的Workspace对象,然后在该对象上调用“Get”方法.这将从您请求的版本下载过期的文件.
编辑:添加一些示例代码:
// Get a reference to our Team Foundation Server.
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("http://<yourserver>:8080/tfs/<yourcollection> "));
// Get a reference to Version Control.
VersionControlServer versionControl = tpc.GetService<VersionControlServer>();
Workspace workspace = versionControl.GetWorkspace("<local path to your workspace>");
workspace.Get();
内容总结
以上是互联网集市为您收集整理的c# – 获取最新方法,始终重新下载全部内容,希望文章能够帮你解决c# – 获取最新方法,始终重新下载所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。