从TFS获取最新版本的文件

时间:2012-12-20 10:45:12

标签: c# tfs2010

我正在尝试从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 个答案:

答案 0 :(得分:3)

虽然我之前没有这方面的知识,但我想我会稍微扩展我的评论,希望它可能会有所帮助(因为似乎没有其他人回答)。

根据documentationWorkSpace.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中写了这个,所以如果我做了一个错字/做了一些愚蠢的事情,我会道歉。