2016-11-11 9 views
0

コードレビューポリシーを実施するためのTides 2012 Serversideイベントハンドラを作成しました。 コードレビューリクエストとレスポンスの作業項目を作成できました。完成レビュープロセスの後でも 、私は下の2013年は私のコードですVisual Studioでチームエクスプローラウィンドウで関連作業項目]セクションで検討作業項目を参照してくださいすることができませんでし見直しコードをチェックインしようと思ったときに、TFSでプログラムでチェックインしているときにレビュー済みワークアイテムを関連付ける方法

var workItemStore = (WorkItemStore)projectCollection.GetService(typeof(WorkItemStore)); 
WorkItemType wiType = workItemStore.Projects[0].WorkItemTypes["Code Review Request"]; 
WorkItem workItem = new WorkItem(wiType); 
workItem.Fields["System.AssignedTo"].Value = "XXXXXX"; 
//ev.ChangesetOwner.DisplayName; 
workItem.Fields["Microsoft.VSTS.CodeReview.ContextType"].Value = "Shelveset"; 
workItem.Fields["Microsoft.VSTS.CodeReview.Context"].Value = shelveset.Name; 
workItem.Fields["Microsoft.VSTS.CodeReview.ContextOwner"].Value = shelveset.OwnerName; 
workItem.Fields["System.AreaPath"].Value = project.Name; 
workItem.Fields["System.IterationPath"].Value = project.Name; 
workItem.Fields["System.State"].Value = "Requested"; 
workItem.Fields["System.Reason"].Value = "New"; 
workItem.Fields["System.Description"].Value = "Code Review Request "; 
workItem.Fields["System.Title"].Value = "Code Review Request " + System.DateTime.Now.ToString(); 
var invalidFields = workItem.Validate(); 
if (workItem.IsValid()) 
    workItem.Save(); 
var responseId = workItem.Id; 
var type = workItemStore.Projects[0].WorkItemTypes["Code Review Response"]; 
workItem = new WorkItem(type); 
workItem.Fields["System.AssignedTo"].Value = "xxxxxxxx"; 
workItem.Fields["System.AreaPath"].Value = project.Name; 
workItem.Fields["System.IterationPath"].Value = project.Name; 
workItem.Fields["System.State"].Value = "Requested"; 
workItem.Fields["System.Reason"].Value = "New"; 
workItem.Fields["Microsoft.VSTS.Common.ReviewedBy"].Value = "xxxxxxxx"; 
workItem.Fields["System.Title"].Value = "Code Review Response " + System.DateTime.Now.ToString(); 
WorkItemLinkTypeEnd linkTypeEnd = workItemStore.WorkItemLinkTypes.LinkTypeEnds["Parent"]; 
workItem.Links.Add(new RelatedLink(linkTypeEnd, responseId)); 
if (workItem.IsValid()) 
    workItem.Save(); 
+0

を? –

+0

実装したい詳細なプロセスは何ですか? Code Reviewリクエストをコードにどのように関連付けるのですか? –

答えて

0

はあなたですあなたの作業項目を関連するchangestにリンクさせませんでした。次のコードは、これを実行する方法を示しています。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.VersionControl.Client; 
using Microsoft.TeamFoundation.WorkItemTracking.Client; 

namespace APPI 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string url = "http://xxx.xxx.xxx.xxx:8080/tfs/DefaultCollection"; 
      TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(url)); 
      WorkItemStore wis = ttpc.GetService<WorkItemStore>(); 
      VersionControlServer vcs = ttpc.GetService<VersionControlServer>(); 
      int wid = 82; 
      int cid = 332; 
      WorkItem wi = wis.GetWorkItem(wid); 
      Changeset cs = vcs.GetChangeset(cid); 
      ExternalLink el = new ExternalLink(wis.RegisteredLinkTypes["Fixed in Changeset"], cs.ArtifactUri.AbsoluteUri); 
      wi.Links.Add(el); 
      wi.Save();  
     } 
    } 
} 

同様の質問についてTFS - VS Extension: Add work item to pending changes via APIも、このリンクチェック:あなたはチェックインの時にチェンジに作業項目をリンクするもしかしてC# Programmatically Checking in code changes with TFS API while associating the changeset to a Work Item

+0

チェックインする前にコードレビューポリシーを適用したい。 – user3305131

+0

@ user3305131チェックインを行わずにチェックインするのを防ぐため、チェックインポリシーを使用することができます。チェックインの前にコードレビューを必要とするカスタムチェックインポリシーは、参照用に: https://visualstudiogallery.msdn.microsoft.com/c476b708-77a8-4065-b9d0-919ab688f078 これは同様の質問です: http://stackoverflow.com/questions/11715017/how-to-force-code-review-before-check-in-in-tfs-2012-rc –

関連する問題