使用C#窗口服务侦听TFS工作项状态更改

时间:2013-07-08 16:09:47

标签: windows-services tfs-sdk

我正在开展一个项目,我需要将数据(票证)从服务台部门同步到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#)的机制。所以我可以将它更新回我的帮助台系统。所以有人可以帮我解决这个问题吗?提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以编写Web服务,然后将其订阅到TFS Event Service。 的参考:

答案 1 :(得分:0)

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

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