В чем смысл MSBUILD/NANT, если вы собираетесь писать процедурный код? Разве Powershell лучше?

В настоящее время я пишу развертывание script в MSBUILD, и после загрузки нескольких расширений я обнаружил, что смотрю на файл сборки и думаю:

Какой смысл делать это в MSBUILD?

Это развертывание script полностью процедурное: остановить сайт, удалить папку, скопировать файлы, изменить права доступа, начать веб-сайт и т.д. Нет никаких фантазийных материалов, которые я предполагаю, является естественной областью таких инструментов, как MSBUILD, NANT и MAKE.

Единственная причина, по которой я могу использовать MSBUILD, заключается в том, что она входит в стандартную комплектацию, и ее легко разместить расширения в вашем SVN, поэтому строит "просто работу".

Проблема с этим заключается в том, что я должен все это время прорабатывать, как делать "базовые вещи" в MSBUILD (поиск расширений, разработка синтаксиса), который был бы тривиальным (хотя и более подробным) в Powershell или даже командной строке.

Итак, подведем итог: Являются ли процедурные задачи подходящими для MSBUILD или вам лучше использовать что-то вроде Powershell?

Ответ 1

MSBuild не является языком сценариев и не должен использоваться как таковой. Это почти несчастливо, что MSBuild обладает такой богатой расширяемостью и достаточно гибкой, чтобы ее можно было использовать практически для чего угодно. Используйте инструменты, наиболее подходящие для задачи, если вы слишком долго тратите время на создание слишком ограниченной и слишком низкого качества по сравнению с тем, что вы могли бы создать с помощью других технологий, вы должны переключиться.

Ответ 3

Это действительно зависит от вашей ситуации. Если бы это зависело от меня, и вы использовали Visual Studio - я бы сказал, да, оставайтесь с MSBuild ради интеграции.

С другой стороны, я бы выбрал MSBUILD, поскольку, хотя задачи очень процедурные, это дает вам гибкость в дальнейшем расширять этот процесс сборки для обработки более сложных задач.

Ответ 4

msbuild поставляется с .NET. Вы должны добавить powershell на серверы/пользователи должны добавить его - по крайней мере, через Windows XP, server 2003. Это может быть или не быть проблемой в вашей среде.

Я не думаю, что процедурные задачи подходят для написания в MSBUILD, просто потому, что чем короче msbuild, тем лучше, насколько мне известно. Я мог бы использовать msbuild для их вызова, но, вероятно, написал бы библиотеку расширений для их реализации.

Ответ 5

Я думаю, что это зависит от того, как протекает процесс выпуска и развертывания, а для увядания имеет смысл использовать расширение MSBuild или выполнить силовую оболочку. MSBuild позволяет flexiablity обрабатывать все ваши шаги процесса в одном автономном потоке выполнения.

Если вам нужно, чтобы все это происходило одновременно, MSBuild дает вам контроль над "событиями" или целевыми объектами, которые могут быть переопределены в соответствии с вашими требованиями.

Если требование развернуть ваши артефакты после компиляции вашего кода, то MSBuild хорошо подходит для этого, так как вы можете использовать цель "AfterBuild", которая запускается во время стандартного исполнения MSBuild. Это может сделать ваш процесс самодостаточным.

Powershell не может создать ваш код. Он должен был бы вызвать MSBuild из вашего script. Для меня это вопрос о том, чтобы ваша сборка и развертывание были автономными и поэтому были бы лучше организованы.

MSBuild - это базовая платформа и механизм сборки Microsoft.