使用服务器端方法更新TFS工作项

时间:2011-01-21 19:16:47

标签: tfs tfs2010 tfs-sdk

我正在尝试使用TFS 2010的新服务器端插件功能。(我从herehere获得了如何开始执行此操作的基础知识)

它运行良好,比处理TFS事件的正常Web服务方式快许多倍。

但服务器端方法非常缺乏证据。我已经找到了如何检索工作项(通过Microsoft.TeamFoundation.WorkItemTracking.Server.DataAccessLayerImpl.GetWorkItem(和GetWorkItemXml

但是做一次更新让我感到困惑。所有更新方法都采用xml。但是从GetWorkItemXml返回的xml格式不正确(它表示不允许使用“Action'FIELD')。

我尝试过使用客户端TFS API,但它确实有效。但它比我想要的慢,因为它将肥皂回叫包裹回服务器。由于我已经在服务器上运行,所以不必进行额外的(不需要的)通信步骤会很好。

有没有人有TFS的服务器端经验?你能给我一个关于如何使用服务器端方法更新工作项的指针吗?

1 个答案:

答案 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>