从 TFS2012 升级到 TFS2015 RC 后,TFS 服务器插件失败
TFS Server plugin fails after upgrade from TFS2012 to TFS2015 RC
我们刚刚将其中一台服务器从 TFS2012.2 升级到 TFS2015RC。一切顺利 "smooth",但我们遇到了一个问题:
不久前我们为 TFS 写了一个服务器端插件,它监听 WorkitemChangedEvent
。它实现了 ISubscriber
接口。以下代码在更新前运行良好:
void ITfsService.UpdateState(int workItemId, string newState)
{
var wi = store.GetWorkItem(workItemId);
wi.State = newState;
wi.Save();
}
更新后,针对 TFS2015 dll 重新编译后,出现以下错误:
Failed to process notification: TF237124: Work Item is not ready to save.
注意workitemtypes的none变了,是一样的数据。
我尝试在保存之前通过调用 Validate()
从错误中获取更多信息,这是输出:
Status: InvalidListValue
State: "Resolved, To Be Reviewed"
WIT: Task
Id: 5842
Field: State
但是,状态 "Resolved, To Be Reviewed" 确实存在于可用状态列表中。在 GUI 中,完全可以将项目的状态更改为 "Resolved, To Be Reviewed":
是什么导致 Save() 失败?
终于找到原因了:
显然,Validate()
调用验证了整个 ProcessConfiguration.xml
。因为在 TFS2012 中同时存在 AgileProcessConfiguration
和 CommonProcessConfiguration
,工作项状态存在潜在问题。
在正确的 ProcessConfiguration
文件中解决了这些问题后,该插件再次工作(并且,TFS 还可以升级 Backlog\IterationPlanning 功能。)
我们刚刚将其中一台服务器从 TFS2012.2 升级到 TFS2015RC。一切顺利 "smooth",但我们遇到了一个问题:
不久前我们为 TFS 写了一个服务器端插件,它监听 WorkitemChangedEvent
。它实现了 ISubscriber
接口。以下代码在更新前运行良好:
void ITfsService.UpdateState(int workItemId, string newState)
{
var wi = store.GetWorkItem(workItemId);
wi.State = newState;
wi.Save();
}
更新后,针对 TFS2015 dll 重新编译后,出现以下错误:
Failed to process notification: TF237124: Work Item is not ready to save.
注意workitemtypes的none变了,是一样的数据。
我尝试在保存之前通过调用 Validate()
从错误中获取更多信息,这是输出:
Status: InvalidListValue
State: "Resolved, To Be Reviewed"
WIT: Task
Id: 5842
Field: State
但是,状态 "Resolved, To Be Reviewed" 确实存在于可用状态列表中。在 GUI 中,完全可以将项目的状态更改为 "Resolved, To Be Reviewed":
是什么导致 Save() 失败?
终于找到原因了:
显然,Validate()
调用验证了整个 ProcessConfiguration.xml
。因为在 TFS2012 中同时存在 AgileProcessConfiguration
和 CommonProcessConfiguration
,工作项状态存在潜在问题。
在正确的 ProcessConfiguration
文件中解决了这些问题后,该插件再次工作(并且,TFS 还可以升级 Backlog\IterationPlanning 功能。)