我正在尝试创建TFS 2013服务器端插件,它将根据特定字段转换工作项状态。字段正在正确更新,但在客户端(VS team )中打开工作项时不会刷新。我需要手动按刷新按钮来显示正确的状态。
是否可以在插件状态更改后强制刷新显示的工作项?
下面是处理工作项更改事件的代码。
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();
}
发布于 2015-05-31 21:55:38
很久以前我也有同样的需求。但我试图在Web Access而不是中实现这一点。对于Web Access,这是不可能的,因为有一个简单的解释:
我的实现是在服务器端中实现的,而操作
refresh
实际上是在客户端中实现的。
但是我认为Team也无法做到这一点,因为TFS没有提供任何库来进行UI操作,比如"Open窗口、等等“。
您已经完成了SyncToLatest
,TFS将强制用户首先刷新,以便在操作后对工作项进行任何更改,但是用户必须首先手动地对工作项客户端进行refresh
。
如果您想在没有用户手动刷新的情况下实现这一点,并且Web对您来说是可以的,那么您应该检查您的实现是否可以使用运行在客户端的TFS网络访问扩展来完成。您可以从塞尔坎的博客上查看并收集有关它们的详细信息。
发布于 2015-06-02 15:22:17
Beytan,是的,如果编写客户端插件,那么我需要对每个客户端的库进行优化。但我试图通过实现TFS服务器端插件来避免这种情况。但是服务器将使用workitemchange事件处理程序加载。因此,现在我正在研究客户端外接程序,以实现状态转换的自动化。
https://stackoverflow.com/questions/30565665
复制