【问题标题】:Get Specific Version TFS API获取特定版本的 TFS API
【发布时间】:2012-09-14 19:03:29
【问题描述】:

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

我通过使用 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"

【问题讨论】:

    标签: c# tfs tfs-sdk


    【解决方案1】:

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

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

    【讨论】:

    • 感谢 Taylor,您的解释非常有用。我使用 GetStatus 类解决了问题。调用workspace.Get() 方法后,我检查返回值,如果值为“NoActionNeeded”,我得到了所有。再次感谢。
    【解决方案2】:

    我还没有打算尝试这个,但是你能把 GetOptions.Overwrite 和 GetOptions.GetAll 结合起来吗?

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

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

    【讨论】:

    • 谢谢,我试过了。我在我的代码中添加了“GetOptions.GetAll”,当我单击获取最新按钮时,程序正在下载我工作区中的所有项目。我只想在 treeView 中获取选定的项目
    【解决方案3】:

    您可以按照这些步骤 - 基于 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-01
      • 1970-01-01
      • 2014-01-05
      • 2020-08-19
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      相关资源
      最近更新 更多