TFS 2010 в последнее время меня весьма занимает, причём не всегда в хорошем смысле - две недели возился, пытаясь настроить такую простую вещь как деплой приложения на веб-сайт.
Основная проблема, почему нельзя это сделать легко и просто стандартна для Microsoft - есть несколько вариантов (по крайней мере я знаю вариентов 5-7) как это сделать, но мало где они описаны подробно.
Я вообще не говорю про то, что найти вменяемую документацию по MSBuild нереально, её просто нет.
Ну так вот, какие у нас есть варианты:
- Самый быстро бросающийся в глаза - параметрами MSBuild
- Каким-нить target'ом (типа AfterBuild) после сборки в том же MSBuild
- Создав и настроив файл *.targets в проекте - это опять для MSBuild
- Каким-нить bat файлов или событием тупо скопировать директорию
- И т.п. лабуда чаще всего связанная с MSBuild.
Ну как всегда: параметры не хотят работать, будто MSBuild их не видит; события обрабатывать не очень удобно и просто и т.п.
Как всегда всё оказалось совсем не там, где искали. Про настройку (для деплоя) MSBuild можно забыть. Вернее не совсем забыть, но с другого конца подойти. Оказывается эти хитрые Микрософты, которые и так уже задрали с рабочими процессами в SharePoint и здесь их умудрились пропихнуть!
< /понудим>
Так вот решение элементарное, никаких targets и т.п. неудобной лабуды не нужно! Ура!
В VS 2010:
- В разделе Builds нажимаем правой кнопкой на какой-либо Build definition и выбираем "Open Process File Location" (Ну Нафиг С Большой Буквы Каждое Слово Каждого Пункта Меню Делать?!) ИЛИ в Source Control заходим в папку BuildProcessTemplates (всегда пугали названия папок без пробела).
- Наша жертва - DefaultTemplate.xaml. Открываем её.
- Это обычный рабочий процесс (workflow), нам нужно добавить в самый конец просто копирование скомпиленного проекта в директорию нужного нам сайта.
- Сначала добавляем AgentScope, называем красиво - WebDeploy (не важно как)
- Внутри него добавляем активность - CopyDirectory. Выставляем свойства. По названию свойств догадаетесь что они значат, надеюсь =) BuildDetail - переменная рабочего процесса, посмотрите описание интерфейса IBuildDetail, если хотите от неё ещё чего-то.
- Destionation = "C:\Inetpub\wwwroot\test\request\"
- Source = BuildDetail.DropLocation + "/_PublishedWebsites\HelpDeskRequest\"
- Всё, сохраняем, Check in, запускаем билд. Рабочий процесс выполнится и скопирует директорию куда надо =)
Комментариев нет:
Отправить комментарий