0

我正在做一个项目,我需要将数据(票证)从服务台部门同步到 TFS,反之亦然。我可以使用 Windows 服务在 TFS 中添加项目,并且运行良好。但是,每当工作项在 TFS 中的状态发生变化时,我都想在帮助台系统中进行更新。所以为此我需要一种可以监听 TFS 工作项状态变化的事件监听器。我正在使用 TFS2010 API,并且我还研究了 ISubscriber。但看起来我需要开发插件并将其放在 TFS 安装的插件文件夹中的某个位置。我不想那样做,也不想直接使用网络服务。

我使用以下方法订阅事件。

public static int RegisterWithTFS(TfsTeamProjectCollection server, string eventType, string filter, int port, string receiveMethod)
{
string serviceEndPointURL = String.Format("http://{0}:{1}/{2}", Environment.MachineName, port, receiveMethod);
var preferences = new DeliveryPreference { Schedule = DeliverySchedule.Immediate, Type = DeliveryType.Soap, Address = serviceEndPointURL };

IEventService eventService = (IEventService)server.GetService(typeof(IEventService));
string username = @"mytfsuser";
return eventService.SubscribeEvent(username, eventType, filter, preferences);

}

我想知道一种机制,一旦 TFS 中的工作项状态发生变化,就会触发我的窗口服务 (C#)。所以我可以将它更新回我的帮助台系统。那么有人可以帮我解决这个问题吗?提前致谢。

4

2 回答 2

0

您可以编写一个 Web 服务,然后将其订阅到 TFS 事件服务。 参考:

于 2013-09-17T10:33:17.260 回答
0

最后,我找到了解决方案:

我开发了一个 Tfs 服务器插件(而不是 Window 服务)并订阅了 TFSWorkItemChanged事件。它继承ISubscriber接口并覆盖ProcessEvent方法。我需要将此插件部署在 TFS 服务器上 TFS 安装的插件文件夹中。这种方法非常有效!!

于 2013-11-20T12:56:46.470 回答