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

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

Archive for the ‘Build FAQ’ Category

Как использовать настраиваемые пути для Team Build

Posted by Shamrai Alexander на 2 июля, 2012

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

Если для проекта VS используются настраиваемые пути для сборки, как отображено на рисунке ниже, то для Team Build они работать не будут.

Для того чтобы настраиваемые пути работали в Team Build необходимо выполнить следующие действия:

Для определения построения.

  1. Открыть на редактирование существующий процесс сборки либо создать новый.

  1. Перейти в процессе сборки последующему пути:

  1. Выбрать действие Run MS Build for Project.

  1. Для свойства выбранного действия OutDir очистить значение.

  1. Для свойства CommandLineArguments установить значение String.Format(«/p:SkipInvalidConfigurations=true;TeamBuildOutDir=»»{0}»» {1}»,BinariesDirectory, MSBuildArguments)

  1. Сохранить изменения и вернуть извлеченный шаблон процесса.

Для каждого проекта, у которого должны быть настраиваемые пути.

  1. Открыть проект решения Visual Studio.
  2. Выбрать проект, для которого нужно настроить путь, и выбрать для него Отменить загрузку проекта.

  1. Изменить файл проекта.

  1. Добавить свойство OutputPath в определение проекта. Определение этого свойства должно быть после всех уже существующих конфигураций.

<PropertyGroup Condition=»$(TeamBuildOutDir) != » «>

<OutputPath>$(TeamBuildOutDir)\»Настраиваемый путь»</OutputPath>

</PropertyGroup>

  1. Сохранить изменения, загрузить проект и вернуть изменений.

Posted in Build FAQ, Microsoft, Team Foundation Server FAQ, Visual Studio | Отмечено: , , , | Leave a Comment »

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

Posted by Shamrai Alexander на 14 августа, 2009

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

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

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

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

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

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

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

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

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

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

Posted in Build FAQ, Microsoft, Team Foundation Server FAQ, Visual Studio | Отмечено: , , , , , , | Leave a Comment »

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

Posted by Shamrai Alexander на 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: Путь к проекту».

Posted in Build FAQ, Microsoft, Team Foundation Server FAQ, Visual Studio | Отмечено: , , , , , | 1 Comment »

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

Posted by Shamrai Alexander на 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

Posted in Build FAQ, Microsoft, Team Foundation Server FAQ, Visual Studio | Отмечено: , , , , , | Leave a Comment »

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

Posted by Shamrai Alexander на 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

Posted in Build FAQ, Microsoft, Team Foundation Server FAQ, Visual Studio | Отмечено: , , , , , | Leave a Comment »