2

私は(wql経由で)取り組んだすべてのタスクを取得しようとしています。つまり、誰かがそれらの時間を記録しました。今のところ、私はメモリ内でそれをやっています:

foreach (WorkItem wi in workItems)
        {
            foreach (Revision item in wi.Revisions)
            {
                try
                {
                     // elided...
                     myTask.TimeSpent = item.Fields["Completed Work"].Value == null ?
                     0 : (double)item.Fields["Completed Work"].Value;
                }
            }
         }

次のような最初のクエリでそれを実行できるようにしたいと思います。

 var query = "SELECT [System.Id] FROM WorkItems
 WHERE [System.TeamProject] = '@project'
 and [System.WorkItemType]='Task' *and [System.WorkItem.Completed_Work] <> 0*";

「完了した作業」フィールドにドリルダウンするさまざまな方法を試しました。 [System.WorkItemRevisions.Completed_Work],
[System.WorkItem[Revisions[Completed_Work]]],
[System.WorkItem.Revisions.[Completed Work]]

しかし、私は常に例外を受け取ります。何か案は?

4

1 に答える 1

1

問題は、使用している参照名です。CompletedWork別の問題は@project、ステートメントがプロジェクト コンテキスト内で呼び出されないため、動作し@projectないためです。ここに私がそれをどのように使用するかの例があります:

string query = "SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '" + SelectedTeamProject + "' AND [System.WorkItemType]='Task' AND [Microsoft.VSTS.Scheduling.CompletedWork] <> 0";

Work Item Type Definition (WITD)TFS Power Tools がインストールされている場合は、Visual Studio でをチェックして正しい参照名を取得できます。

Tools-> Process Editor-> Work Item Types-> Open WIT from Server
Choose the Team Project Collection and the TeamProject where the Task is in 
Open the Task definition and watch out for the Completed Work field and check the reference name for it
于 2013-02-04T15:22:31.097 に答える