2

我所追求的是一种捕获对存储在我们的新 TFS 2012 服务器上的工作项中某些字段所做的所有更改的方法,以便我可以根据结果执行其他逻辑(通过帮助台 API 处理更新)开发人员改变了什么。

我已经苦苦挣扎了一个多星期,谷歌搜索和阅读参考资料,但似乎 TFS 2012 没有任何效果。

我尝试了以下设置:

在 TFS 2010 中开发和调试服务器端事件处理程序 (GeeksWithBlogs)

和许多其他“可信”的来源,没有运气。

我对一般建议不感兴趣,但对这个问题的具体解决方案不感兴趣。可能不止一种方法可以做到这一点,但我会选择一种可行的方法。

我将应用程序开发的这一部分推迟到接近截止日期,因为当第一次阅读它时,这似乎是一件简单的事情。我想我可以只使用 Microsoft.TeamFoundation.WorkItemTracking.Client 库来完成这项工作,但事实证明没有预定义的事件可以从客户端代码订阅。(或者我还没有找到它)。所以我想我需要创建一个自定义事件处理程序并将其安装到 TFS 上的插件目录中,如上面提到的链接中所述,但是当我这样做时,我在调试 TFS 时遇到异常并且没有任何反应:

First-chance exception at 0x000007FEFD90BCCD (KernelBase.dll) in w3wp.exe

所以现在我已经超过了最后期限,恐慌地寻找可行的解决方案,然后求助于一些手动方式来定期循环并检查工作项,就像我必须在应用程序的帮助台端处理工单一样。

如果我对事件和代表有更多了解,我想我可以为此创建一个好的解决方案,但我没有,而且我现在正在学习 C#,所以...

4

2 回答 2

0

我有一个类似的问题。通过执行以下步骤解决它 a) 参考以下程序集的 11.0.0.0 版本

Microsoft.TeamFoundation.Client.dll
Microsoft.TeamFoundation.Common.dll
Microsoft.TeamFoundation.Framework.Server.dll
Microsoft.TeamFoundation.WorkItemTracking.Client.dll
Microsoft.TeamFoundation.WorkItemTracking.Server.DataAccessLayer.dll

b) 将目标框架更改为 .NET Framework 4

于 2013-04-02T21:05:42.547 回答
0

创建 TFSISubscriber事件处理程序是在 TFS 内操作数据的最有效方式。重要的是,您的插件是针对正确的 .NET Framework 版本构建的,并且是 AnyCPU 或 x64。x86 二进制文件无法在 TFS 2012(仅限 x64)中加载。另外,在 TFS 2012 中,这些插件现在应该是 .NET 4.0/4.5,并且它们必须引用 11.0.0.0 服务器位。

如果没有确切异常的更多详细信息(可能已记录到事件日志中,或者您可以通过将调试器附加到 TFS Web 应用程序来找到该异常),我们将无法帮助您调试您在当前实现中遇到的问题。

作为替代方案,您可以使用更易于使用的“旧式”SOAP 事件处理程序,因为它需要您使用客户端对象模型。此外,它更容易调试,因为它可以在您的本地机器上运行,而无需安装完整的 TFS 实例。在 TFS 2012 中,您可以从 Web 访问界面配置这些类型的警报,方法是单击您的姓名(右上角),然后选择“我的警报”。

单击“可以从高级警报管理页面管理团队警报”链接以配置新事件并将其“格式”设置为“SOAP”。在“发送至”中,您可以指定必须由 TFS 调用以处理这些警报的 Web 服务 URL。

创建此类服务的最简单方法是创建一个简单的 .asmx Web 服务并添加一个具有以下签名的方法:

 [SoapDocumentMethod(Action="http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03/Notify", RequestNamespace = " http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03")]
 [WebMethod(MessageName=”Notify”)]
 public void Notify(string eventXml)
 {
         //Write your custom code here
         //Use eventXml to extract event related fields and their values
 }
于 2013-01-07T20:58:44.147 回答