Рабочий процесс Team Build не может загрузить мои пользовательские действия - PullRequest
1 голос
/ 21 сентября 2011

Я искал альтернативы в течение нескольких часов, и у меня возникли некоторые странности.

Итак, чтобы изолировать свою проблему, я создал очень простое кодовое действие, которое входит в мой шаблон xaml:

using System.Activities;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Build.Workflow.Activities;

namespace Weco.TeamBuild.FirmwareActivityPack
{
    [BuildActivity(HostEnvironmentOption.Controller)]
    public sealed class TestActivity: CodeActivity<string>
    {
        protected override string Execute(CodeActivityContext context)
        {
            context.TrackBuildMessage("Inside TestActivity", BuildMessageImportance.High);
            return "success";
        }
    }
}

Когда я попытался запустить это действие в последовательности «Запуск на агенте», я получил традиционную ошибку:

Cannot create unknown type '{clr-namespace:Weco.TeamBuild.FirmwareActivityPack;assembly=FirmwareActivityPack}TestActivity'.

У меня действительно есть сборка, в которой находится TestActivity, в источнике.control, и мой контроллер сборки указывает на него, как рекомендовано в нескольких онлайн-статьях.

Интересным фактором является то, что когда я помещаю копию этого действия в самый верх моего шаблона, он работает нормально (но толькоПервый TestActivity).Похоже, «Путь контроля версий к пользовательским сборкам» действителен только для контроллера сборки, а не для агентов.Я пытаюсь избежать установки или удаления чего-либо в GAC моего сервера сборки.

К вашему сведению, TFS установлена ​​на machine_1, а Team Build (контроллер + 4 агента) установлена ​​на machine_2

1 Ответ

3 голосов
/ 21 сентября 2011

Сам нашел ответ.

Проблема в том, что сообщение об ошибке, отображаемое при сбое сборки, является слишком общим. Я очистил пользовательский путь сборки из свойств контроллера сборки и установил сборку в GAC машины сборки.

Сборка все еще не удалась, но теперь с другим сообщением:

"Процесс сборки не прошел проверку. Подробности: Ошибка проверки: частная реализация действия« 1: DynamicActivity »имеет следующую ошибку проверки: TF28001: действие« TestActivity »нельзя использовать в контексте AgentScope . "

Теперь поиск ответа был легким, и решение состоит в том, чтобы изменить атрибут класса для вашего пользовательского действия следующим образом:

 [BuildActivity(HostEnvironmentOption.Agent)]
 public sealed class UpdateFirmwareVersionBeforeCompiling : CodeActivity<string>

и это делает трюк

...