tfs 2012的插件不会被解雇

时间:2016-02-23 14:24:22

标签: visual-studio-2012 plugins tfs

我正在为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文件来查看问题是否写入事件日志

1 个答案:

答案 0 :(得分:1)

代码看起来正确但任何异常都会被忽视。

我怀疑大多数EventLog.WriteEntry电话。除非您创建源,否则它将失败。这可以通过提升的Powershell提示符轻松完成New-EventLog -LogName "Application" -Source "WorkItemChangedEventHandler"

您还可以调整代码并使用Trace.Writeline。可以使用Microsoft的SysInternals站点中的DebugView查看输出。 确保启用 Capture Global Win32 选项。

不要忘记在catch子句中添加一些日志记录。