Кому приходилось настраивать сборку проекта с помощью msbuild или nant понимает нудность этой задачи. А кроме того, для особо сложных сборок этот путь громоздок и тернист. Если кто не верит, может ознакомится с огромными build-файлами NHibernate тут и тут.
И вот, настал очередной раз возникла нужда настраивать сборку проекта... Писать очередную xml портянку не хотелось, и я полез в гугл. На самом деле, инструментов для сборки оказалось довольно много: MsBuild, nant, NuBuild, Psake, FAKE (F# MAKE), Rake, UppercuT.
С msbuild, nant и nubuild были отвергнуты сразу: старая добрая xml-конфигурация не казалась мне такой уж доброй, и разные ее вариации не делают ее добрее.
Psake - сборка проекта на основана на powershell скриптах. Уже лучше, но чтобы выполнять скрипты пришлось на каждом компьютере настраивать разрешения для их выполнения. Не сложно, но не хотелось бы.
Fake & Rake - конфигурация сборки на языке F#. Серьёзно к ним присматривался, но видимо потребуют некоторого времени на изучение.
В итоге остановился на UppercuT - автор обещал возможность настроить сборку проекта за пять минут. И не обманул. Настроить сборку оказалось в разы быстрее, чем написать этот пост :)
Итак, пять простых шагов, как настроить сборку с помощью:
Немного изучив содержимое папки lib, удалил оттуда лишнее: xUnit, MbUnit, Eazfuscator и MoMA. Чуть позже попробую настроить создание nuget-пакета с помощью UppercuT. А дальше в планах изучить fake и rake.
PS. Проект о котором идёт речь всё тот же - EventPublisher.
И вот, настал очередной раз возникла нужда настраивать сборку проекта... Писать очередную xml портянку не хотелось, и я полез в гугл. На самом деле, инструментов для сборки оказалось довольно много: MsBuild, nant, NuBuild, Psake, FAKE (F# MAKE), Rake, UppercuT.
С msbuild, nant и nubuild были отвергнуты сразу: старая добрая xml-конфигурация не казалась мне такой уж доброй, и разные ее вариации не делают ее добрее.
Psake - сборка проекта на основана на powershell скриптах. Уже лучше, но чтобы выполнять скрипты пришлось на каждом компьютере настраивать разрешения для их выполнения. Не сложно, но не хотелось бы.
Fake & Rake - конфигурация сборки на языке F#. Серьёзно к ним присматривался, но видимо потребуют некоторого времени на изучение.
В итоге остановился на UppercuT - автор обещал возможность настроить сборку проекта за пять минут. И не обманул. Настроить сборку оказалось в разы быстрее, чем написать этот пост :)
Итак, пять простых шагов, как настроить сборку с помощью:
- Uppercut формирует версии сборок проекта используя файл SolutionVersion.cs. Вот этот файл нам и надо созадать в корневой папке Solution'а. И далее подключить этот файл как ссылку(!) ко всем проектам.
- Далее идём на страницу UppercuT, и качаем архив с последней версией (или не последней, кому как нравится). Находим в архиве папку Uppercut, и копируем всё ее содержимое в корневую папку solution'a.
- Теперь всё-таки придётся заняться xml. Среди скопированных папок найти папку settings, а в ней открываем файл Uppercut.config. Заполняем четыре свойства, которые понадобится uppercut'у чтобы сгенерировать SolutionVersion.cs:
<property name="project.name" value="__SOLUTION_NAME_WITHOUT_SLN_EXTENSION__" overwrite="false" /> <property name="path_to_solution" value="." overwrite="false" /> <property name="repository.path" value="__REPOSITORY_PATH__" overwrite="false" /> <property name="company.name" value="__COMPANY_NAME__" overwrite="false" />
Всё достаточно очевидно. Отмечу только, что сейчас поддерживаются git и svn репозитории. Соответствующий url и надо вписать в конфигурацию. Поскольку я собирался билдить проект прямо из папки решения - поставил в repository.path точку. И это сработало. :)
- Прописываем в переменную среды PATH путь к утилите командной строки контроля версий. В моем случае git - C:\Program Files\Git\bin
- Запускаем build.bat из корневой папки решения. Наслаждаемся результатом.
Немного изучив содержимое папки lib, удалил оттуда лишнее: xUnit, MbUnit, Eazfuscator и MoMA. Чуть позже попробую настроить создание nuget-пакета с помощью UppercuT. А дальше в планах изучить fake и rake.
PS. Проект о котором идёт речь всё тот же - EventPublisher.
Комментариев нет:
Отправить комментарий