Событие BranchObjectCreated TFS API не срабатывает

У меня есть код для автоматизации создания определений сборки в TFS.

Теперь я хотел бы, чтобы этот код вызывался всякий раз, когда создается ветка.

Глядя на API, я вижу, что в Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer есть BranchObjectCreatedEvent.

Поэтому я добавил некоторый код в консольное приложение для обработки события.

    private static void MonitorBranchCreated()
    {
        try
        {
            TfsTeamProjectCollection tfs = InitialiseTfs();

            var vcs = tfs.GetService<VersionControlServer>();

            var projects = vcs.GetAllTeamProjects(true);

            foreach (var project in projects)
            {
                project.VersionControlServer.BranchObjectCreated += BranchObjectCreated;
            }

            Console.WriteLine("Subscribed to TFS BranchObjectCreated Event - Awaiting Notification...");
            Console.ReadLine();
        }
        catch (Exception exception)
        {
            DisplayError(exception);
        }
    }

    private static void BranchObjectCreated(object sender, BranchObjectCreatedEventArgs e)
    {
        // Create the Build
    }

Проблема в том, что это событие никогда не срабатывает, когда я создаю ветку из Source Control Explorer в Visual Studio.

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

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


person bitsprint    schedule 16.11.2011    source источник


Ответы (1)


Когда вы подключаете события к клиентскому API, вы получаете только события, созданные этим клиентом. Если бы вы подключили прослушиватель BranchObjectCreated, а затем вызвали бы VersionControlServer.CreateBranch(), затем будет вызван прослушиватель, созданный вашим объектом ветки.

Если вы хотите прослушивать события на сервере (например, когда кто-то другой создает ветку или вы создаете ветку от другого клиента), вам необходимо подключиться к системе оповещения проекта сервера.

Вы можете установить обозреватель оповещений в Team Foundation Server Power Tools, которые позволят вам настроить детальные оповещения для проектов, которые отправит вам электронное письмо или вызовет веб-метод. На этом этапе вы можете создать новую сборку, которая ссылается на эту новую ветку.

person Edward Thomson    schedule 16.11.2011
comment
Спасибо, я просмотрел службу событий, но там нет события для создаваемой ветки. В конце концов я создал сервис, который периодически запрашивает ветки через QueryRootBranchObjects в VersionControlServer, а затем создает сборку из любых новых веток, созданных после предыдущего запроса. - person bitsprint; 17.11.2011
comment
+1 за это я должен был упомянуть опрос как вариант, это то, что я делал в прошлом и с большим успехом. - person Edward Thomson; 18.11.2011