2015-10-29 118 views
0

在我的情況下,我需要訂閱TFS事件(創建/刪除團隊項目,工作項目,簽入,迭代,區域)以實現某些業務邏輯。我基於this manual。現在我只能捕獲工作項目和簽入事件,但我需要更多(團隊項目,迭代,區域)。在this list,我沒有找到正確的事件。Team Foundation Server 2012訂閱事件

using System; 
using System.Collections.Generic; 
using System.Diagnostics; 
using Microsoft.TeamFoundation.Common; 
using Microsoft.TeamFoundation.Framework.Server; 
using Microsoft.TeamFoundation.Integration.Server; 
using Microsoft.TeamFoundation.VersionControl.Server; 
using Microsoft.TeamFoundation.WorkItemTracking.Server; 

public class WorkItemChangedEventHandler : ISubscriber 
{ 
    public string Name 
    { 
     get { return "WorkItemChangedEventHandler"; } 
    } 

    public SubscriberPriority Priority 
    { 
     get { return SubscriberPriority.Normal; } 
    } 

    public Type[] SubscribedTypes() 
    { 
     var types = new List<Type> 
     { 
      typeof(Microsoft.TeamFoundation.WorkItemTracking.Server.WorkItemChangedEvent),// working 
      typeof(Microsoft.TeamFoundation.VersionControl.Server.CheckinNotification),// working 
      typeof(Microsoft.TeamFoundation.Integration.Server.ProjectCreatedEvent)// NOT working 

     }; 
     return types.ToArray(); 
    } 

    public EventNotificationStatus ProcessEvent(TeamFoundationRequestContext requestContext, NotificationType notificationType, 
     object notificationEventArgs, out int statusCode, out string statusMessage, out ExceptionPropertyCollection properties) 
    { 
     statusCode = 0; 
     properties = null; 
     statusMessage = String.Empty; 
     try 
     { 
      EventLog.WriteEntry("WorkItemChangedEventHandler", string.Format("Entity: {0} was modified", notificationEventArgs.GetType())); 
     } 
     catch (Exception ex) 
     { 
      EventLog.WriteEntry("WorkItemChangedEventHandler", ex.Message + ex.StackTrace); 
     } 

     return EventNotificationStatus.ActionPermitted; 
    } 
} 

回答

0

我有CheckinNotificationEventHandler一個類:

public class CheckinNotificationEventHandler : ISubscriber 
{ 
     public Type[] SubscribedTypes() 
     { 
      return new Type[1] { typeof(CheckinNotification) }; 
     } 
     public EventNotificationStatus ProcessEvent(TeamFoundationRequestContext requestContext, NotificationType notificationType, object notificationEventArgs, out int statusCode, out string statusMessage, out ExceptionPropertyCollection properties) 
     { 
      if (notificationType == NotificationType.Notification && notificationEventArgs is CheckinNotification) 
      { 
     ... 
      } 
      return EventNotificationStatus.ActionPermitted; 
     } 
} 

和用於WorkItemChangedEventHandler第二類:

public class WorkItemChangedEventHandler : ISubscriber 
    { 

     public Type[] SubscribedTypes() 
     { 
      return new Type[1] { typeof(Microsoft.TeamFoundation.WorkItemTracking.Server.WorkItemChangedEvent) }; 
     } 

     public EventNotificationStatus ProcessEvent(TeamFoundationRequestContext requestContext, NotificationType notificationType, object notificationEventArgs, out int statusCode, out string statusMessage, out ExceptionPropertyCollection properties) 
     { 

      if (notificationType == NotificationType.Notification && notificationEventArgs is WorkItemChangedEvent) 
      { 
      ... 
      } 
     return EventNotificationStatus.ActionPermitted; 
     } 
    }