2011-11-09 23 views
2

这是来自Team Foundation Server: Getting the Changeset Id from PolicyBase object的后续问题如何使用活动服务挂钩入住事件?

我想在办理登机手续时运行一些代码。上面链接问题的答案指出我在this page on MSDN

我没有完全理解页面上的解释,我不确定在哪里运行签入事件处理程序。

是否应该在每台客户端计算机上运行的应用程序中运行,还是需要在实际的TFS服务器上运行?

我需要确保签入事件处理程序代码针对每个签入进行运行,而不管哪个客户端进行签入。

我尝试下载该微软页面上的示例代码,但它不起作用。 我可以连接到TFS服务器。当我点击“获取已注册事件列表”按钮,左侧列表框一旦填充有13个项目全部名为

Microsoft.TeamFoundation.Server.RegistrationEntry

我点击其中一个项目,我得到一个TypeLoadException与消息

未能从程序集加载类型“Microsoft.TeamFoundation.Server.Subscription“Microsoft.TeamFoundation,版本= 10.0.0.0,文化=中性,公钥= b03f5f7f11d50a3a”

(奇怪的是,好像这是引用,即使它是我挂项目VS2008版本的程序集的VS2010版本)。

我在做什么错在这里?

+0

Aaah,那好得多。 – Will

+0

@ will thank you :-) – millie

+0

顺便说一下,你需要使用[Fusion log viewer。](http://msdn.microsoft.com/en-us/library/e74a18c4(v = VS.100) ).aspx)只要确保以管理员身份运行它,打开日志并在尝试调试之前重新启动。您将看到CLR正在查找程序集的位置以及哪个版本,并从那里确定它未找到的原因(如果您已安装它)。 – Will

回答

4

库引用

我总是发现这是一个痛苦的尝试使用TFS2008库,而不是那些2010一旦被安装。您可能可以更改引用以使用特定版本的DLL,但不应该使用TFS2010硬件,因为它们向后兼容。

事件订阅

对于TFS2010最简单的方法在C砸自定义DLL:\ Program Files文件\微软的Team Foundation Server 2010 \应用层\ Web服务\ BIN \插件这些都是相当简单的编写和仅涉及实施CheckinNotification的ISubscriber。

Example Code 
http://embeddedworkitems.codeplex.com/SourceControl/changeset/view/2611#97271 

对于TFS2008,或者如果您在TFS2010喜欢,你需要使用SOAP Web服务(或bisubscribe.exe工具)订阅事件,并有自己的web服务为TFS推事件。这是订阅事件更难的方法,所以如果你可以使用插件方法,我会推荐它(虽然它可以更强大,更好的负载分配)。

VSTS Subscription FAQ http://blogs.msdn.com/b/narend/archive/2006/07/27/679571.aspx 
Subscribing without a Client SOAP Service http://blogs.msdn.com/b/mrod/archive/2006/09/18/761174.aspx 

TFS部署者是一个开源项目,作为Windows服务运行并通过SOAP服务接收事件通知。它包含了似乎有一些代码中有一个库(可重复使用),用于接收签事件

http://tfsdeployer.codeplex.com/SourceControl/changeset/view/57852#2395 

使用,你只需要在应用程序的一个副本拾取事件并处理它们订阅,也可以是在TFS服务器(必须在使用插件方法的情况下),但在使用SOAP订阅时可以在另一台计算机上。

入住政策和替代答案?

取决于您正在编码的内容,您可以改为写入签入策略。这需要安装在所有客户端机器上,并且不会被所有不同的客户端(例如eclipse)支持,但它可能适合您的需求。我之前提供的支持嵌入式工作代码的工具的示例还包含签入策略以执行其他检查

http://embeddedworkitems.codeplex.com/SourceControl/changeset/view/2611#97267