Какой смысл MSBUILD / NANT, если вы просто собираетесь писать процедурный код? Чем лучше Powershell? - PullRequest
10 голосов
/ 18 февраля 2009

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

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

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

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

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

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

Ответы [ 5 ]

10 голосов
/ 21 февраля 2009

Проверьте PSAKE и посмотрите, что вы думаете.

http://www.jameskovacs.com/blog/IntroducingPsake.aspx http://powerscripting.wordpress.com/2009/01/25/episode-56-james-kovacs-talks-about-psake/ http://code.google.com/p/psake/

Эксперимент! Наслаждайтесь! Engage!

Джеффри Сновер [MSFT] Партнер по управлению Windows, архитектор

8 голосов
/ 24 марта 2009

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

3 голосов
/ 18 февраля 2009

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

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

1 голос
/ 11 мая 2009

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

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

0 голосов
/ 20 марта 2012

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...