Когда дело доходит до сборки .
Net-проектов, первое, что приходит на ум, — это утилита MSBuild + сопутствующие сценарии сборки.
Действительно, пока проект небольшой, его возможностей вполне достаточно.
Но со временем объем кода растет, структура продукта становится сложнее и запутаннее, и начинаешь задумываться о поиске более гибкого решения.
В нашем случае таким решением оказалась комбинация Rake+Albacore. Что это такое? Rake — инструмент для автоматизации сборки программного кода, написанный на Ruby. На хабе уже была достаточно подробная информация о Rake статья пользователь Lass_ua (за что ему, кстати, большое спасибо), поэтому повторяться не буду.
Скажу лишь, что мы выбрали его из-за его исключительной гибкости, которую нам не удалось получить от скриптов MSBuild. Это связано с тем, что весь процесс сборки описывается, по сути, программой Ruby, что открывает перед нами море возможностей.
Но к моему удивлению, про Альбакор я не нашел ни одной статьи, хотя это уже достаточно зрелый и известный проект.
Что такое Альбакор?
Фактически, Альбакор — это просто набор пользовательских задач для Rake, направленных на создание .Net-проектов.
Вот их полный список:
- Компилятор ASP.NET
- Генератор информации о сборке
- CSC — компилятор C-Sharp
- Exec – выполнить любую произвольную командную строку
- Свободный мигратор
- MSBuild
- MSpec
- МСТест
- Нант
- НЧурн
- Консоль NCover
- Отчеты Ncover
- NDepend
- NugetPack – создание пакетов .
nuget из файла .
nuspec.
- NugetPush – размещение пакетов .
nuget в Интернете.
- NugetPublish – публикует пакеты .
nuget в Интернете.
- Нунит
- Nuspec – создание файла .
nuspec для создания пакета .
nuget.
- Вывод — общие задачи вывода сборки, включая копирование файлов и расширение шаблона.
- Плинк
- SQLCmdTask
- Разархивировать
- XUnit
- Почтовый индекс
Установка и использование
Установка Rake и Albacore:gem install rake
gem install albacore
Чтобы использовать Albacore, просто включите соответствующий модуль в вашем rake-файле.
require 'albacore'
Теперь мы можем помимо задач Rake использовать еще и задачи Albacore. В нашем случае наиболее часто используемыми из них являются MSBuild (фактически вызов MSBuild.exe с заданными параметрами) и Exec (Выполнение произвольной команды в командной среде Windows).
Вызов MSBuild: msbuild :build_solution do |msb|
msb.properties = { :configuration => :Debug }
msb.targets = [ :Clean, :Build ]
msb.solution = "path/to/your/solution.sln"
end
Единственное обязательное поле здесь — решение.
Подробные инструкции по использованию этого задания можно найти Здесь
Для Exec нужно определить всего два поля — саму команду и ее параметры exec do |cmd|
cmd.command = "LIB\\sgen\\sgen.exe"
cmd.parameters = "BIN\\mylovely.dll /force"
end
К сожалению, список задач Альбакора пока не покрывает всех потребностей, которые могут возникнуть при сборке .
Net-проекта.
В нашем проекте мы используем для тестирования Галлион , которого нет в этом списке.
Но, как оказалось, сообщество Ruby позаботилось о таких как мы, и первая ссылка по запросу «gallio rake» привела меня на github:gist с кодом соответствующей задачи.
Впечатление
Переход на связку Rake+Albacore оказался очень быстрым и безболезненным, и мы получили необходимую гибкость при сборке проекта.Ruby для меня новый язык, и я приятно удивлен количеством информации и различных полезных кусков кода, которые присутствуют в Интернете, а также удобством и возможностями самого языка.
Думаю, этим мое знакомство с ним не ограничится; Я планирую продолжать использовать его в нашем проекте для небольших сопутствующих утилит. Теги: #rake #ruby #albacore #.
NET #сборка проекта #ruby #.
NET
-
Картриджи Bt: Качество И Количество
19 Oct, 24 -
Цифровизация Общения: Зачем Нам Смайлы?
19 Oct, 24 -
Бигпикча Выбрал Краудфандинг
19 Oct, 24 -
Установка Windows 7 За 10 Минут.
19 Oct, 24 -
Домены, Что Делать?
19 Oct, 24 -
Новости Российской Полупроводниковой Отрасли
19 Oct, 24