5

TFSからローカルファイルを更新しようとしていますが、機能させることができません。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との他のすべての通信は問題なく、保留中の変更、チェックイン、またはチェックアウトはすべて機能していることを付け加えなければなりません。これは非常に苛立たしいことです。

4

1 に答える 1

3

私はこれについて事前の知識はありませんが、それが役立つことを期待して、コメントを少し拡張すると思いました(他の誰も答えていないようです)。

documentationによると、警告/失敗/競合がいくつあったかを示すGetStatusWorkSpace.Get()オブジェクトを返す必要があります-現時点では、この情報を捨てているだけです。

他のエラーをログに記録しているのと同じ方法で、最新の取得の失敗をログに記録したい場合は、次のようなことを試すことができます。

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 に答える