从TFS获取文件的最新版本

5

我试图从TFS更新本地文件,但无法使其工作。我甚至不知道为什么会失败,因为TFS没有抛出任何异常,它只是默默地不理睬我,也不更新任何内容。

public bool getLatest(string[] items)
{
    try
    {
        Workspace myWorkspace = createWorkspace();
        myWorkspace.Get(items, 
                        VersionSpec.Latest, 
                        RecursionType.Full, 
                        GetOptions.Overwrite);

        return true;
    }
    catch (Exception ex)
    {
        Tools.MessageLogger.LogError(ex.Message);
        return false;
    }
}

我必须补充说明的是,与TFS的所有其他通信都很顺利,例如待处理更改、签入或签出等都能正常工作。这非常令人沮丧。

1
根据文档WorkSpace.Get()应该返回一个GetStatus对象,其中包含有关警告/失败/冲突的数量 - 如果您将其存储并在调试中检查它,那么它可能具有您需要的信息。 - Bridge
1个回答

3
虽然我之前没有相关经验,但我希望能在这里展开我的评论,以帮助您(因为似乎没有人回答)。
根据文档WorkSpace.Get()应返回一个GetStatus对象,该对象告诉您有多少个警告/失败/冲突 - 目前你只是扔掉了这些信息。
如果您想以与记录其他错误相同的方式记录获取最新版本中的故障,可以尝试以下方法:
public bool getLatest(string[] items)
{
    try
    {
        Workspace myWorkspace = createWorkspace();

        var results = myWorkspace.Get(items, VersionSpec.Latest, RecursionType.Full, GetOptions.Overwrite);
        var failures = results.GetFailures();

        foreach(var fail in failures)
        {
            Tools.MessageLogger.LogError(fail.GetFormattedMessage());
        }

        return failures.Count == 0;
    }
    catch (Exception ex)
    {
        Tools.MessageLogger.LogError(ex.Message);
        return false;
    }
}

我是在文本编辑器而非专业的IDE中编写这段代码的,如果我有打错字或者做了些傻事,请见谅。


非常感谢您的回答。问题出在工作区映射上,这完全是奇怪的,因为其他函数都能正常工作,但这个信息非常有帮助! - Flobbo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接