我正在尝试使用TFS CheckinEvent
订阅TFS 2010中的IEventService
。出于某种原因,我一直在接受:
事件类型<<事件类型>>不存在
代表WorkItemChangedEvent
和CheckinEvent
。我做错了什么?
var serverUri = new Uri("http://TFS_SERVICE:8080/tfs");
var server = TfsConfigurationServerFactory.GetConfigurationServer(serverUri);
var eventService = server.GetService<IEventService>();
var preference = new DeliveryPreference
{
Schedule = DeliverySchedule.Immediate,
Type = DeliveryType.Soap,
Address = "http://localhost:61773/NotifyService.asmx"
};
int eventId = eventService.SubscribeEvent("CheckinEvent", null, preference);
答案 0 :(得分:4)
您正在配置服务器级别查询事件服务。这些事件类型仅存在于团队项目集合级别,我假设您实际上想要创建事件订阅。您需要将代码更改为以下内容:
var serverUri = new Uri("http://TFS_SERVICE:8080/tfs/collection");
TfsTeamProjectCollection collection = new TfsTeamProjectCollection(serverUri);
var eventService = collection.GetService<IEventService>();
var preference = new DeliveryPreference
{
Schedule = DeliverySchedule.Immediate,
Type = DeliveryType.Soap,
Address = "http://localhost:61773/NotifyService.asmx"
};
int eventId = eventService.SubscribeEvent("CheckinEvent", null, preference);
请注意,URI需要包含您的收藏名称。
答案 1 :(得分:1)
不使用TfsConfigurationServerFactory
,而是使用TfsTeamProjectCollectionFactory.GetTeamProjectCollection()
方法。这些事件存在于集合级别,而不是服务器级别。