Checkin ポリシーの代わりに、CheckInEvent をリッスンするリスナーを作成できます。イベントがトリガーされたら、通知を送信します。これらのサーバー側プラグインはISubscriber インターフェースを実装しています。このブログ記事を参照して、それらを作成およびデバッグする方法を参照してください。
このブログのコードは、チェックイン イベントに応答するコードのサンプル実装を示しています。参照できます。
namespace Sample.SourceControl.Server.PlugIns
{
public class CodeCheckInEventHandler : ISubscriber
{
public string Name
{
get { return "CodeCheckInEventHandler"; }
}
public SubscriberPriority Priority
{
get { return SubscriberPriority.Normal; }
}
public EventNotificationStatus ProcessEvent(TeamFoundationRequestContext requestContext, NotificationType notificationType, object notificationEventArgs, out int statusCode, out string statusMessage, out Microsoft.TeamFoundation.Common.ExceptionPropertyCollection properties)
{
statusCode = 0;
properties = null;
statusMessage = String.Empty;
try
{
if (notificationType == NotificationType.Notification && notificationEventArgs is WorkItemChangedEvent)
{
CheckinNotification ev = notificationEventArgs as CheckinNotification;
TeamFoundationApplication.Log(string.Format("New Changeset was checked in by {0}. ID: {1}, comments: {2}", ev.ChangesetOwnerName, ev.Changeset, ev.Comment), 123, System.Diagnostics.EventLogEntryType.Information);
}
}
catch (Exception ex)
{
TeamFoundationApplication.LogException("Sample.SourceControl.Server.PlugIns.CodeCheckInEventHandler encountered an exception", ex);
}
return EventNotificationStatus.ActionPermitted;
}
public Type[] SubscribedTypes()
{
return new Type[1] { typeof(CheckinNotification) };
}
}
}