私はまったく同じ動作を経験しましたが、残念ながら @JWC の回答は役に立ちませんでした。私にとって有効な解決策は、このリンクで見つけることができます。
したがって、これは元の回答が失われた場合の簡単な要約です。
キーポイントは、WorkItemServer
クラスを使用することです。Microsoft.TeamFoundation.WorkItemTracking.Proxy.dll
それはアセンブリに住んでいます。
まず、WorkItemStore
インスタンスを作成します。
var store = collection.GetService<WorkItemStore>();
次に、必要な反復パスを作成します。
var commonservice = collection.GetService<ICommonStructureService>();
var iterationRoot = commonservice.GetNodeFromPath("\\MyTeamProject\\Iteration");
var newIterationPath = commonservice.CreateNode("my sprint", iterationRoot.Uri);
次に、TFS でキャッシュを更新します (これはF5
、Web インターフェイスで押すのと似ていると思います)。
var wiServer = collection.GetService<WorkItemServer>();
wiServer.SyncExternalStructures(WorkItemServer.NewRequestId(), commonservice.GetProjectFromName("MyTeamProject").Uri);
store.RefreshCache();
最後に、新しく作成された作業項目を新しく作成されたイテレーションに割り当てます。
var wi = new WorkItem(store.Projects["MyTeamProject"].WorkItemTypes["Product Backlog Item"]);
wi.Title = "Hello from API";
wi.Description = "This work item was created from API";
wi.Fields["Assigned To"].Value = "Yan Sklyarenko";
wi.IterationPath = FormatPath(commonservice.GetNode(newIterationPath).Path, "Iteration", "MyTeamProject");
wi.Save();
それでおしまい!このメソッドFormatPath
は、反復パスを作業項目IterationPath
フィールドで必要な形式、つまり from \MyTeamProject\Iteration\my sprint
to に変換しますMyTeamProject\my sprint
。
これで時間を節約できることを願っています。
注: これを TFS 2013 に対して実行します。