2011-11-09 51 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