如何从 TFS 2013 服务器端插件刷新更新的打开工作项?

How to refresh updated opened work item from TFS 2013 server side plugin?

我正在尝试创建 TFS 2013 服务器端插件,它将根据特定字段转换工作项状态。字段正在正确更新,但在客户端(VS 团队资源管理器)中打开工作项时未刷新。我需要手动按下刷新按钮才能显示正确的状态。

我可以在插件更改状态后强制刷新显示的工作项吗?

以下是处理工作项更改事件的代码。

if (null != workItem)
{
    workItem.PartialOpen();
    if (!workItem.Fields["ALMTool.FF.Team.Leader"].Value.Equals(string.Empty))
    {
        if (workItem.Fields["System.State"].Value.Equals("Raised"))
        {
            workItem.State = "Analyse";
        }
    }
    else
    {
         workItem.State = "Raised";
    }
    workItem.Save();
    workItem.Store.RefreshCache(true);
    //workItem.Close();
    workItem.SyncToLatest();         
}

我很久以前就有过同样的需求。但我试图在 Web Access 而不是 Team Explorer 中实现这一点。对于 Web Access,这是不可能的,原因很简单:

My implementation was in server-side and the operation refresh is actually happening in client-side.

但我认为 Team Explorer 也无法做到这一点,因为 TFS 不提供任何库来进行 UI 操作,例如 "Open Work Item Window, Open Pending Changes Windows, etc."

您已经完成 SyncToLatest 并且 TFS 将强制用户先刷新以便在您的操作后对工作项进行任何更改,但用户必须 refresh工作项客户端首先,手动。

如果您想在无需用户手动刷新的情况下实现此目的并且 Web Access 适合您,您应该检查是否可以使用 TFS Web Access Extensions 来完成您的实现运行 客户端。您可以从 Serkan's blog.

查看并收集有关它们的详细信息

Beytan,是的,如果编写客户端插件,那么我需要将库交付给每个客户端。但我试图通过实施 TFS 服务器端插件来避免这种情况。但是服务器将加载 workitemchange 事件处理程序。所以现在我正在研究客户端加载项以自动执行状态转换。(应该不会那么难:))