我不确定我要做什么是正确的所以我首先告诉你我的问题。 我有 TFS 作为错误跟踪系统和另一个跟踪工作时间的系统。我希望如果一个工作项状态改变,其他系统也会改变状态。
到目前为止我所做的是以下内容。
我为 TFS Web 服务编写了一个插件,我捕获了 WorkItemChangedEvent。
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
{
if (notificationType == NotificationType.Notification && notificationEventArgs is WorkItemChangedEvent)
{
WorkItemChangedEvent ev = notificationEventArgs as WorkItemChangedEvent;
EventLog.WriteEntry("WorkItemChangedEventHandler", "WorkItem " + ev.WorkItemTitle + " was modified");
}
}
catch (Exception)
{
}
return EventNotificationStatus.ActionPermitted;
}
我将 DLL 放到了 C:\Program Files\Microsoft Team Foundation Server 2010\Application Tier\Web Services\bin\Plugins 但我看起来从未调用过扩展名。因此事件日志中没有任何内容出现。
但如果我尝试像这篇文章中那样调试服务 http://geekswithblogs.net/jakob/archive/2010/10/27/devleoping-and-debugging-server-side-event-handlers-in-tfs-2010.aspx 我不能 Hook 的过程。所以调试不起作用。 为什么我不能调试服务?有没有更好的方法来做到这一点?
最佳答案
不确定您是否解决了这个问题,但对我来说您似乎缺少类中的订阅方法。
public Type[] SubscribedTypes()
{
return new Type[1] {typeof(WorkItemChangedEvent)};
}
没有这个你的插件将永远不会被击中,因此你将无法调试。
关于web-services - 自定义 TFS Web 服务插件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4992286/