3

我写了一些代码来获取所选项目的最新版本。当我运行它时,它可以工作。但是如果我删除该文件夹并再次运行它,它会显示“所有文件都是最新的”

我使用 Visual Studio TFS 源控制和获取特定版本解决了这个问题。如何使用 TFS API 在 C# 项目中实现?

我的代码:

WorkingFolder workfolder = new WorkingFolder(ServerFolder, LocalFolder);
workspace.CreateMapping(workfolder);

workspace.Get(VersionSpec.Latest, GetOptions.Overwrite);

编辑:

我添加该代码并检查返回值“getStatus”

GetStatus getStatus = workspace.Get(VersionSpec.Latest,  GetOptions.Overwrite);
if (getStatus.NoActionNeeded)
// create new workspace and use same codes in "My code"
4

3 回答 3

1

我还没有打算尝试这个,但你可以将 GetOptions.Overwrite 与 GetOptions.GetAll 结合起来吗?

workspace.Get(VersionSpec.Latest, GetOptions.Overwrite | GetOptions.GetAll)

在命令行中,我会为 tf get 命令使用 /force 选项。我认为 GetOptions.GetAll 标志可能等同于 /force 选项。

于 2012-09-13T15:31:50.833 回答
1

如果您在 2012 年使用本地工作区,则 GetLatest 无法下载您已删除的文件的问题将不成问题。但是,在“服务器”工作区中,TFS 只知道您告诉 TFS 的本地磁盘更改。在这种情况下,由于 TFS 服务器不知道您删除的文件,它不会知道它们丢失并且不会重新下载它们。

如果您想在这种情况下获得它们,则必须像 Dan 提到的那样传递 force 选项。不过,强制并不是一个很好的选择。它将强制重新下载所有内容,这是您通常不想做的事情。

于 2012-09-13T18:11:08.390 回答
0

您可以按照这些步骤 - 基于VersionControlServer

链接:http: //msdn.microsoft.com/fr-fr/library/microsoft.teamfoundation.versioncontrol.client.versioncontrolserver.aspx

链接:http: //msdn.microsoft.com/fr-fr/library/bb138927.aspx

注意:添加参考

Microsoft.TeamFoundation.VersionControl.Client.dll 

Microsoft.TeamFoundation.Client.dll
于 2012-09-13T14:45:34.860 回答