我正在尝试使用TFS 2010的新服务器端插件功能。(我从here和here获得了如何开始执行此操作的基础知识)
它运行良好,比处理TFS事件的正常Web服务方式快许多倍。
但服务器端方法非常缺乏证据。我已经找到了如何检索工作项(通过Microsoft.TeamFoundation.WorkItemTracking.Server.DataAccessLayerImpl.GetWorkItem
(和GetWorkItemXml
)
但是做一次更新让我感到困惑。所有更新方法都采用xml。但是从GetWorkItemXml返回的xml格式不正确(它表示不允许使用“Action'FIELD')。
我尝试过使用客户端TFS API,但它确实有效。但它比我想要的慢,因为它将肥皂回叫包裹回服务器。由于我已经在服务器上运行,所以不必进行额外的(不需要的)通信步骤会很好。
有没有人有TFS的服务器端经验?你能给我一个关于如何使用服务器端方法更新工作项的指针吗?
答案 0 :(得分:2)
不幸的是,工作项跟踪的服务器对象模型不是很有用。除非您想自己做一些非常繁重的工作,否则使用客户端对象模型(Microsoft.TeamFoundation.WorkItemTracking.Client.dll)是最好的选择。
如果要使用Server OM for Work Items,则必须使用XML包。这些没有记录/支持,所以YMMV。这是他们的“最佳”文档:http://marshalbyrefobject.blogspot.com/search/label/Work%20Item%20Tracking
以下是一个样子的样本:
<Package Product=http://your_server:8080/WorkItemTracking/v1.0/ClientService.asmx DisableNotifications=”True” xmlns=””>
<InsertWorkItem ObjectType=”WorkItem” BypassRules=”True”>
<ComputedColumns>
<ComputedColumn Column=”System.RevisedDate”>
</ComputedColumns>
<Columns>
<Column Column=”System.WorkItemType”>
<Value>Bug</Value>
</Column>
<Column Column=”System.AreaId”>
<Value>40</Value>
</Column>
<Column Column=”System.CreatedBy” Type=”String"/>
</Columns>
<InsertText FieldName=”Microsoft.VSTS.CMMI.Analysis” FieldDisplayName=”Analysis”>text goes here </InsertText>
</InsertWorkItem>
</Package>