J'ai rencontré exactement le même comportement, et malheureusement la réponse @JWC n'a pas aidé. La solution qui fonctionne pour moi peut être trouvée par this link. Donc, ceci est un résumé rapide au cas où la réponse originale serait perdue.
Le point clé est d'utiliser la classe WorkItemServer
. Il réside dans l'assemblage Microsoft.TeamFoundation.WorkItemTracking.Proxy.dll
.
Tout d'abord, vous créez une instance WorkItemStore
:
var store = collection.GetService<WorkItemStore>();
Ensuite, créez des chemins d'itération nécessaires:
var commonservice = collection.GetService<ICommonStructureService>();
var iterationRoot = commonservice.GetNodeFromPath("\\MyTeamProject\\Iteration");
var newIterationPath = commonservice.CreateNode("my sprint", iterationRoot.Uri);
Ensuite, rafraîchir le cache dans TFS (je soupçonne que ce qui est similaire à appuyer sur F5
dans l'interface web):
var wiServer = collection.GetService<WorkItemServer>();
wiServer.SyncExternalStructures(WorkItemServer.NewRequestId(), commonservice.GetProjectFromName("MyTeamProject").Uri);
store.RefreshCache();
Et enfin , affectez l'élément de travail nouvellement créé à l'itération nouvellement créée:
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();
C'est tout! La méthode FormatPath
traduit le chemin d'itération à la forme requise par le champ de travail IterationPath
, c'est-à-dire de \MyTeamProject\Iteration\my sprint
à MyTeamProject\my sprint
.
Espérons que cela peut faire gagner du temps.
NOTE: Je cours ceci vers TFS 2013.