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 的所有其他通信都很好,pendingchanges、签入或签出都正常工作。这很令人沮丧。

4

1 回答 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 中编写的,所以如果我打错字/做了一些愚蠢的事情,我深表歉意。

于 2012-12-20T12:09:53.627 回答