Я занимаюсь поддержкой довольно большого портфеля приложений .NET. Также в портфолио представлены устаревшие приложения, созданные на основе других платформ - нативных C ++, ECLIPS Forms и т. Д.
У меня есть сложная инфраструктура сборки поверх NAnt, которая управляет сборками для всех этих приложений. Фреймворк сборки использует NAnt для выполнения различных задач:
- Извлекать код из Subversion, а также создавать теги в Subversion
- Соберите код, используя MSBuild для .NET или другие компиляторы для других платформ.
- Заглянуть в файлы AssemblyInfo для увеличения номеров версий
- Делать удаление определенных файлов, которые не должны быть включены в сборки / выпуски
- Выпускает код в папки развертывания
- Zips код для резервного копирования
- Развертывание служб Windows; начать и остановить их
- И т.п.
Большинство из этих вещей могут быть выполнены только с помощью NAnt, но мы создали пару задач расширения для NAnt, чтобы сделать некоторые вещи, специфичные для нашей среды. Кроме того, большинство из вышеперечисленных процессов обобщены и используются во многих наших различных сценариях сборки приложений, поэтому мы не повторяем логику. Так что это не простой код NAnt и не простые сценарии сборки. Существуют десятки файлов NAnt, которые собираются вместе для выполнения сборки.
В последнее время я был недоволен NAnt по нескольким причинам: (1) его синтаксис просто ужасен - языки программирования поверх XML действительно ужасны, (2) проект, похоже, умер на корню; в последнее время не было тонны обновлений, и кажется, что никто не стоит у руля. Попытка заставить его работать с .NET 4 вызывает некоторые болевые точки из-за этого отсутствия активности.
Итак, со всем этим фоном, вот мой вопрос. Учитывая некоторые вещи, которые я хочу выполнить, основываясь на этом списке выше, и учитывая, что я в основном нахожусь в магазине .NET, но мне также нужно создавать проекты не .NET, есть ли альтернатива NAnt, которую я должен рассмотреть переключается на?
На моем радаре есть такие вещи, как Powershell (с psake или без него ), MSBuild и rake . У всех этих есть свои плюсы и минусы. Например, является ли MSBuild достаточно мощным? Я помню, как использовал его много лет назад, и у него не было такой силы, как у NAnt. Действительно ли я хочу, чтобы моя команда изучала Ruby только для того, чтобы делать сборки с использованием rake? Является ли psake достаточно зрелым проектом, чтобы прикрепить мое портфолио? Является ли Powershell «слишком близко к металлу», и мне придется написать свою собственную библиотеку сборки, похожую на psake, чтобы использовать ее самостоятельно?
Есть ли другие инструменты, которые я должен рассмотреть? Если бы вы занимались поддержкой портфеля .NET значительной сложности, какой инструмент сборки вы бы выбрали? Чем сейчас занимается ваша команда?