我正在为TFS编写插件,以便我可以跟踪WIT中的更改。
namespace TFSServerEventHandler
{
public class WorkItemChangedEventHandler : ISubscriber
{
public Type[] SubscribedTypes()
{
return new Type[1] { typeof(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");
File.WriteAllText(@"C:\test.txt", "welcome");
Console.WriteLine("test");
}
}
catch (Exception)
{
}
return EventNotificationStatus.ActionPermitted;
}
public string Name
{
get { return "WorkItemChangedEventHandler"; }
}
public SubscriberPriority Priority
{
get { return SubscriberPriority.Normal; }
}
}
}
当我构建此代码并将DLL添加到我的TFS安装时,应用程序正在重新启动。但是当我更改/添加/删除工作项时,没有任何反应。
这可能是什么?
亲切的问候
ps,我试着写一个txt文件来查看问题是否写入事件日志
答案 0 :(得分:1)
代码看起来正确但任何异常都会被忽视。
我怀疑大多数EventLog.WriteEntry
电话。除非您创建源,否则它将失败。这可以通过提升的Powershell提示符轻松完成New-EventLog -LogName "Application" -Source "WorkItemChangedEventHandler"
。
您还可以调整代码并使用Trace.Writeline
。可以使用Microsoft的SysInternals站点中的DebugView查看输出。
确保启用 Capture Global Win32 选项。
不要忘记在catch
子句中添加一些日志记录。