2016-08-04 9 views
1

私は、特定のプロジェクトのブランチに対するすべてのコードレビュー要求を表示するツールを開発中です。今、プロジェクトと対応するブランチリストは正しく配置されています。しかし、私がTeamProjectCollectionのWorkItemStoreでクエリを実行しようとすると、私は間違ってブランチを参照していると思います。ここでTFSブランチに基づいてWorkItemを照会する方法

は、私は、以前のコードでは、分岐情報をロードしています方法は次のとおりです。

var projName = ddlProjects.SelectedItem.ToString(); 

var vcs = tfs.GetService<VersionControlServer>(); 
var bos = vcs.QueryRootBranchObjects(RecursionType.Full); 
var branchList = bos.Select(branch => branch.Properties.RootItem.Item).ToList(); 
var finalList = branchList.Where(b => b.Contains(projName)).ToList(); 
ddlBranches.DataSource = finalList; 

は、ここで私は、エラーを投げているクエリを実行している方法は次のとおりです。

using (var tfs = new TfsTeamProjectCollection(new Uri(@"http://myTeamProjectCollectionURL"))) 
{ 
    var workItemStore = tfs.GetService<WorkItemStore>(); 
    var query = string.Format(@"SELECT * 
           FROM WorkItems 
           WHERE [System.TeamProject] = '{0}' 
           and [System.IterationPath] under '{1}' 
           and [System.WorkItemType] = 'Code Review Request'", ddlProjects.SelectedItem.ToString(), ddlBranches.SelectedItem.ToString()); 

    WorkItemCollection workItemCollection = workItemStore.Query(query); 

そしてここにはありますクエリの結果のエラー:

TF51011: The specified iteration path does not exist. The error is caused by «'$/ProjectName/ReleaseBranch1.0'». 

また、私は間違ってキューで参照していると仮定ry。誰かがこれを行う正しい方法を知っていますか?あなたが提供できる任意のヘルプの事前に感謝!

+1

反復パスとブランチは完全に無関係な概念です。ブランチに一致するように反復パスを明示的に設定していますか? –

+0

私は多くを考えました。いいえ、私が知っている限り、彼らはそのように設定されていません。反復パスではなく、クエリ内のブランチを参照する方法はありますか? –

答えて

1

作業項目は、プロジェクトではなくチームプロジェクトで作成されます。したがって、デフォルトではブランチに対応するフィールドはありません。

目的を達成するには、ブランチパスを指定するようにフィールドをカスタマイズし、そのようなクエリを作成する必要があります。

+0

応答ありがとう!私の無知を許してください、しかし、これを達成する方法のサンプルを私に見せてもらえますか?私はまだLINQクエリとTFS APIの一般的な新機能です。追加のお手伝いをお寄せいただきありがとうございます。 –

+0

TFSパワーツール(https://visualstudiogallery.msdn.microsoft.com/898a828a-af00-42c6-bbb2-530dc7b8f2e1)でフィールドを追加すると、クエリでカスタムフィールドを見つけることができます。このブログを参照してください:http://amosdk.blogspot.sg/2010/09/how-to-add-custom-field-to-existing.html –

関連する問題