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

时间:2015-06-01 04:30:40

标签: tfs tfs2013 tfs-workitem team-explorer

我正在尝试创建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();         
}

2 个答案:

答案 0 :(得分:1)

我很久以前也有同样的需求。但我试图在Web Access而不是团队资源管理器中实现这一点。对于Web Access,由于一个简单的解释,这是不可能的:

  

我的实施是在服务器端和操作   refresh实际上发生在客户端

但我认为团队资源管理器也无法做到这一点,因为TFS不会让任何库进行UI操作,例如"打开工作项目窗口,打开待处理的更改Windows等等&# 34;

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

如果您希望在没有用户手动刷新且Web Access适合您的情况下实现此目的,您应该检查您的实现是否可以使用运行客户端的 TFS Web Access Extensions 来完成。您可以查看并从Serkan's blog收集有关它们的详细信息。

答案 1 :(得分:0)

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