Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2015 未调用IsSubscriber.EventHandler_Visual Studio 2015_Tfs - Fatal编程技术网

Visual studio 2015 未调用IsSubscriber.EventHandler

Visual studio 2015 未调用IsSubscriber.EventHandler,visual-studio-2015,tfs,Visual Studio 2015,Tfs,我有一个非常小的TFS 2015.3服务器端插件。我在这里通过nice演练实现并部署了它: 我们有两个完全独立的TFS 2015实例,一个用于测试,一个用于生产性使用。我在我们的测试TFS上开发了服务器插件——使用Visual Studio 2015 Update 3(如果这很重要的话)——在这里我可以调试插件,它可以按预期工作 然而,当我将它部署到我们的实时系统时,插件什么也没做。我添加了一些日志消息,并看到实现ISubscriber接口的类的构造函数确实被调用(因此我假设插件本身被TFS识别

我有一个非常小的TFS 2015.3服务器端插件。我在这里通过nice演练实现并部署了它:

我们有两个完全独立的TFS 2015实例,一个用于测试,一个用于生产性使用。我在我们的测试TFS上开发了服务器插件——使用Visual Studio 2015 Update 3(如果这很重要的话)——在这里我可以调试插件,它可以按预期工作

然而,当我将它部署到我们的实时系统时,插件什么也没做。我添加了一些日志消息,并看到实现ISubscriber接口的类的构造函数确实被调用(因此我假设插件本身被TFS识别和加载),但EventHandler方法从未被调用(意味着没有写入日志消息)

我检查了Windows事件日志(事件查看器/应用程序和服务日志/微软Team Foundation Server /调试),但没有发现任何相关。 我只有一个猜测,但如果我是对的,我需要帮助来解决这个问题。live TFS是由不再在此工作的人设置的。测试TFS是我几天前用默认设置设置的。我确信这两个版本都是TFS 2015的更新3版本,但我不知道任何配置调整(几个月前安装live系统的人)是否会导致插件无法工作

也许有人能帮我解决这个问题,或者有人知道为什么插件可以在一个TFS上工作,而不能在另一个TFS上工作

这是我的班级:

public class MyEventHandler : ISubscriber
{
    public EventHandler()
    {
        // Called from Test- and Live-TFS!
        EventLog.WriteEntry("TFS Services", "Plugin loaded");
    }

    public EventNotificationStatus ProcessEvent(...)
    {
        // Called ONLY from Test-TFS!
        EventLog.WriteEntry("TFS Services", "Event handled");
        ...
    }
}

因为在事件日志中没有看到任何错误,这意味着没有任何依赖关系被破坏

而且没有写任何信息。建议您在生产TFS服务器上注册“XXEvent”事件源

您可以使用该工具注册事件。它可以将您自己的服务连接到TFS中发生的事件。还可以尝试重建程序集。更多详情请参阅本问题的答案:


此外,您可以在TFS管理员控制台中手动比较两个服务器设置

您所说的“注册XXEvent事件源”是什么意思?我想对WorkItemChangedEvent做出反应,默认情况下应该注册它,不是吗?如何帮助BisSubscribe执行我编写的特殊代码?我所做的不是简单的“工作项更改时邮件地址修复”类型的工作。@Crowley,因为您的workitemchange ProcessEvent方法没有被调用,但它应该被调用。因此,请尝试在新服务器中注册它。在TFServer的cmd行中,使用正确的事件注册事件处理程序端点。例如:在TFS2017中,<代码> C:\程序文件\微软Team Foundation Server 15 \TooS> BISSubBe/EngType WorkMeTeaEngestEnter /地址http://ENDPOINT_HOST_NAME/YOUR_SITE/YOUR_ENDPOINT.asmx /deliveryType Soap/集合http://TFS_SERVER_NAME:8080/Tfs/DefaultCollection请原谅,但这正是我不理解的。我没有Web服务,因此没有可以使用的端点或*.asmx。我有一个实现ISubscriber接口的服务器端插件。它是一个.net类库(程序集),其中输出为dll。或者有没有办法在没有这样一个web端点的情况下注册WorkItemChangedEvent?@Crowley很抱歉误解了。有两种方法可以实现这一点。一个是通过实现ISubscriber并监听WorkitemChangedEvent直接进入tfs流程。另一种方法是使用客户端API注册wcf服务,以获得工作项更改的通知。看来你用的是第一个。第二个用于注册通知的工具只是bisubscribe工具的一个编码备用工具。按照你的方式,你只需要把dll放在servers插件文件夹中。仔细检查路径,如
C:\Program Files\M.T.F.S 14.0\Application Tier\Web Services\bin\Plugins
@Crowley。此外,由于没有日志信息,建议您按照此日志()中的步骤调试事件处理程序,检查是否调用了
EventLog.WriteEntry(…)
方法并成功写入日志。