Заметки консультанта

Шамрай Александр Владимирович

Архив рубрики ‘Build FAQ’

Как создать сборку в TFS

Опубликовал Шамрай Александр на Август 14, 2009

<< Перейти в раздел «Team Foundation Build FAQ»

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

  • Правой клавишей мыши на папке «Построения» в проекте в командном обозревателе выбрать «Определение нового построения»

  • В появившемся диалоговом окне ввести наименование и описание сборки

  • Далее перейти на страницу «Файл проекта» и нажать кнопку «Создать»

  • В появившемся диалоговом окне выбрать проект, для которого будет выполняться сборка, и нажать «Далее»

  • На следующем шаге необходимо выбрать конфигурацию, в которой будет выполняться сборка, и нажать «Далее»

  • На следующей странице, если необходимо, можно выбрать список тестов, которые будут автоматически выполняться после сборки проекта. Далее нужно нажать кнопку «Готово»

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

  • На странице «Триггер» можно установить параметры запуска сборки. Сборка может запускать по запросу, по расписанию или после каждой регистрации изменений, что необходимо для непрерывной интеграции.

Рубрика: Build FAQ, Microsoft, Team Foundation Server FAQ, Visual Studio | Помечено: , , , , , , | Оставьте комментарий »

Как создать свою задачу для TeamBuild с помощью Team Foundation Build API

Опубликовал Шамрай Александр на Июль 15, 2009

<< Перейти в раздел «Team Foundation Build FAQ»

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

  • Создать новый проект как «Class Library».
  • Для этого проекта нужно подключить следующие связи:

Microsoft.Build.Framework
Microsoft.Build.Utilities

  • Отредактировать новый класс по следующему сценарию:

……………
using
Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace SampleBuildTask
{
    public class CustomTask : Task
    {
        private string Argument;
        [Required]
        public string Argument
        {
            get { return Argument; }
            set { Argument = value; }
        }
        public override bool Execute()
        {
            
Log.LogMessage(«My custom task for project: {0}», Argument)
            return true;
        }
    }
}

  • Собрать проект.
  • Перейти к фалу проекта командной сборки (на сервере TFS с расширением «.proj») и изъять его на редактирование.
  • Перед секцией </Project> внести изменения по следующему шаблону:

    <UsingTask TaskName=»SampleBuildTask.CustomTask»
            AssemblyFile=»Путь_к_проекту\bin\Debug\SampleBuildTask.dll» />
            <Target Name=»BeforeDropBuild»>/
                <CustomTask Argument=»$(SolutionRoot)» />
            </Target>

  • Сделать «check in» для проекта сборки и можно сборку выполнять.
  • В результате работы сборки в ее журнале должны быть строки: «My custom task for project: Путь к проекту».

Рубрика: Build FAQ, Microsoft, Team Foundation Server FAQ, Visual Studio | Помечено: , , , , , | Оставьте комментарий »

Как запустить сборку TFS из командной строки

Опубликовал Шамрай Александр на Июль 5, 2009

<< Перейти в раздел “Team Foundation Build FAQ”

Если необходимо выполнить сборку из командной строки, то можно воспользоваться утилитой TFSBuild. Для запуска сборки используется команда «TFSBuild start«, которая использует следующие параметры:

  • Team Foundation Server – URL сервера, на котором определена сборка
  • Team Project – имя проекта, который содержит описание сборки
  • Build Type – наименование сборки
  • Build Machine – имя компьютера, на котором будет выполняться сборка (необязательно)
  • Build Directory – наименование каталога, в котором будет выполняться сборка (необязательно)

Выполнение команды:

TFSBuild start <Team Foundation Server> <Team Project> <Build Type>

Пример:
TFSBuild start http://tfsserver:8080 TFSTeamProject AdvancedBuild

Если необходимо переопределить компьютер и директорий, в которых будут выполняться сборка, то команду нужно выполнить в следующем виде:

TFSBuild start <Team Foundation Server> <Team Project> <Build Type> /m:<Build Machine> /d:<Build Directory>

Пример:
TFSBuild start http://tfsserver:8080 TFSTeamProject AdvancedBuild /m:BUILDSRV2 /d:C:\BuildDir

Рубрика: Build FAQ, Microsoft, Team Foundation Server FAQ, Visual Studio | Помечено: , , , , , | Оставьте комментарий »

Использование приватных ключей с Team Build

Опубликовал Шамрай Александр на Апрель 7, 2009

<< Перейти в раздел «Team Foundation Build FAQ»

Проблема:

При попытке выполнить сборку с помощью Team Build проекта, который содержит приват ключ, возникает ошибка:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1718,7): error MSB4018: The «ResolveKeySource» task failed unexpectedly.
System.InvalidOperationException: Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.
at Microsoft.Build.Shared.ExceptionHandling.RethrowUnlessFileIO(Exception e)
at Microsoft.Build.Tasks.ResolveKeySource.ResolveAssemblyKey()
at Microsoft.Build.Tasks.ResolveKeySource.Execute()
at Microsoft.Build.BuildEngine.TaskEngine.ExecuteTask(ExecutionMode howToExecuteTask, Hashtable projectItemsAvailableToTask, BuildPropertyGroup projectPropertiesAvailableToTask, Boolean& taskClassWasFound)

Решение:

  1. Войти на сервер сборок под учетной записью, которая используется сервисом сборки.
  2. Запустить проект на сборку с помощью Visual Studio.
  3. Ввести пароль для проекта.

Дополнительные ресурсы:

Strong Name your assemblies with Team Build using a private key

Рубрика: Build FAQ, Microsoft, Team Foundation Server FAQ, Visual Studio | Помечено: , , , , , | Оставьте комментарий »