Поместите почти все в скрипты MSBuild, чтобы вы и другие разработчики могли выполнять те же шаги локально через командную строку. В противном случае, когда что-то пойдет не так со сборкой, вы должны отладить ее на сервере CC. Не хороший опыт отладки. Кроме того, вы хотите запустить сборку локально до , чтобы убедиться, что она работает.
Несколько вещей, которые я бы не включил в сценарии MSBuild:
- Обновление SVN, так как CC должен делать это в любом случае, и вы обычно не хотите обновляться при локальной сборке. (Ну, я делаю , печатаю
svn up && msbuild
довольно часто, но это так мало, что мне не нужно помещать это в сценарий.)
- Создание и публикация отчетов о сборке; опять же это домен CC, а не полезный локально
Что касается структурирования ваших файлов MSBuild, вам понадобится «основной» сценарий сборки, который вы можете использовать для построения всего или только некоторых целей, например
MSBuild /t:Build
для постепенного создания кода
MSBuild /t:Rebuild
для чистого восстановления
MSBuild /t:UnitTest
, чтобы просто запустить модульные тесты
MSBuild
для наиболее частого выбора, скажем, эквивалентного t:Build;UnitTest
MSBuild /t:All
для аккуратной сборки кода, документации и настройки, запуска всех тестов и упаковки результатов
Вы также можете добавить «горячие» цели для популярных вариантов.
Наличие одного основного файла сборки не означает, что все определено в этом одном файле; Вы можете включить другие файлы msbuild и / или рекурсивно вызвать msbuild для организации вашей сборки. Например:
- Основной файл .proj должен быть относительно простым; главным образом, он должен определять специфичные для проекта вещи, такие как список решений для построения и специфичные для проекта переопределения
- Пусть мастер-файл включает один файл .targets, который содержит цели и свойства по умолчанию; стремиться сохранить этот проект нейтральным и многоразовым.
- Если файл .targets становится слишком большим, разбейте его на отдельные файлы, например, один для кода, один для справки и документации, один для настройки и упаковки. Пусть ваш основной файл .targets включает эти вложенные файлы, так что вашему файлу .proj по-прежнему нужно включать только один файл
- Аналогичным образом вы можете разделить основной файл .proj, если это необходимо, например, по подсистеме.