Как я могу подключиться к событию регистрации с помощью службы событий? - PullRequest
2 голосов
/ 09 ноября 2011

Это дополнительный вопрос от Team Foundation Server: получение идентификатора набора изменений из объекта PolicyBase

Я хотел бы запустить некоторый код при регистрации.Ответ в связанном вопросе выше указал мне на эту страницу на MSDN .

Я не полностью понял объяснение на странице, и я не уверен, где происходит событие регистрацииобработчик будет запущен.

Должно ли это быть в приложении, которое запускается на каждом клиентском компьютере, или это то, что должно быть запущено на реальном сервере TFS?

Мне нужно сделатьубедитесь, что код обработчика событий регистрации запускается для каждой регистрации независимо от того, какой клиент сделал регистрацию.

Я попытался загрузить образец кода, доступный на этой странице Microsoft, но он не работает.Я могу подключиться к серверу TFS.Когда я нажимаю кнопку «Получить список зарегистрированных событий», в левом списке появляется 13 элементов с именем

Microsoft.TeamFoundation.Server.RegistrationEntry

Как только я нажимаю на один из элементов, я получаю TypeLoadException с сообщением

Не удалось загрузить тип 'Microsoft.TeamFoundation.Server.Subscription' из сборки'Microsoft.TeamFoundation, версия = 10.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a'

(странно, что это ссылка на версию сборки VS2010, даже если это версия VS2008,Я связался с проектом).

Что я здесь не так делаю?

1 Ответ

4 голосов
/ 26 ноября 2011

Библиотечные ссылки

Мне всегда было больно пытаться использовать библиотеки TFS2008 вместо библиотек 2010 года после их установки. Возможно, вы сможете изменить ссылку, чтобы использовать определенную версию DLL, однако использовать TFS2010 не должно быть сложно, поскольку они обратно совместимы.

Подписки на события

Для TFS2010 проще всего перенести пользовательскую DLL в папку c: \ Program Files \ Microsoft Team Foundation Server 2010 \ Уровень приложений \ Веб-службы \ bin \ Plugins. Это довольно просто написать и просто задействовать ISubscriber для CheckinNotification.

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

Для TFS2008 или, если вам нравится в TFS2010, вам нужно использовать веб-сервисы SOAP (или инструмент bisubscribe.exe) для подписки на события и иметь собственный веб-сервис для tfs, на который нужно отправлять события. Это гораздо более сложный способ подписки на события, поэтому, если вы вместо этого можете использовать метод Plugin, я бы порекомендовал его (хотя он может быть более надежным и лучше для распределения нагрузки).

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 Deployer - это проект с открытым исходным кодом, который запускается как служба Windows и получает уведомления о событиях через службу SOAP. Он содержит библиотеку (которая может быть повторно использована), в которой, по-видимому, содержится некоторый код для получения событий регистрации

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

При использовании подписок вам нужна только одна копия приложения, которое собирает события и обрабатывает их, оно может быть на сервере TFS (должно быть, если вы используете метод плагина), но может быть на другом компьютере при использовании подписок SOAP.

Правила регистрации альтернативного ответа?

В зависимости от того, что именно вы кодируете, вы можете вместо этого написать политику регистрации. Это должно быть установлено на всех клиентских компьютерах и не будет поддерживаться всеми различными клиентами (например, eclipse), но это может удовлетворить ваши потребности. Пример, который я привел ранее для инструмента поддержки встроенных кодов рабочих элементов в комментариях о регистрации, также поставляется с политикой регистрации для выполнения других проверок

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