Должен ли я перейти от Nant к MSBuild? - PullRequest
28 голосов
/ 14 августа 2008

В настоящее время я использую nant, ccnet (круиз-контроль), svn, mbunit. Я использую msbuild для создания sln только потому, что его было проще выложить.

Есть ли какие-либо преимущества в переключении всего сценария сборки на MSBuild? Мне нужно иметь возможность запускать тесты, тесты в стиле watir, xcopy deploy. Это проще?

Обновление: какие-нибудь убедительные функции, которые заставили бы меня перейти от nant к msbuild?

Ответы [ 18 ]

1 голос
/ 30 ноября 2008

На самом деле я все еще пытаюсь выяснить этот вопрос самостоятельно, но здесь есть один большой бонус для MSBuild: использование одного и того же файла сборки для локальной непрерывной интеграции путем непосредственного вызова msbuild.exe, а также возможность использования сервера VSTS непрерывная интеграция с одним и тем же файлом сборки (хотя, скорее всего, с разными свойствами / настройками).

т.е. По сравнению с поддержкой TeamCity для сценариев MSBuild, VSTS only поддерживает сценарии MSBuild! Я взломал это в прошлом, выполняя NAnt из MSBuild; Я видел, как другие рекомендуют эту практику так же, как и наоборот, но мне она кажется просто грязной, поэтому я стараюсь не делать этого, если смогу ее избежать. Поэтому, когда вы используете «полный стек Microsoft» (VSTS и TFS), я бы предложил просто придерживаться сценариев MSBuild.

1 голос
/ 11 июня 2010

Я переключился с NANT на MSBuild. Проект работает в .Net 4.0.

Мой опыт в Нанте был хорошим. Проект вроде умер. И когда появился .Net 4.0, пришло время пересмотреть процесс сборки.

С момента последнего выпуска Nant MSBuild начал свою работу. На этом этапе MSBuild - это путь. Он прост в использовании, имеет множество расширений. Я переписал свои сценарии Nant через полтора дня. Сценарий MSBuild составляет 1/3 размера сценариев Nant.

Большая часть работы над сценарием Nant заключалась в настройке различных сред. В MsBuild / .Net 4.0 он встроен.

1 голос
/ 16 октября 2009

MSBuild, интегрируемый с Visual Studio, дает программистам меньше трения при использовании системы сборки. В основном это сводится к тому, что им нужно только перейти к «Build Solution», и все это работает, в отличие от необходимости использовать Custom Build Steps и другие подобные вещи, или, что еще хуже, вынуждают разработчиков строить путем запуска какого-то внешнего скрипта.

Теперь я в основном предпочитаю MSBuild, а не NAnt, потому что это проще. Конечно, у NAnt гораздо больше возможностей, он более мощный и т. Д., Но он может быстро выйти из-под контроля. Если у вас и у ваших инженеров по сборке есть дисциплина, чтобы сохранять простые сценарии NAnt, то это все хорошо. Тем не менее, я видел слишком много систем, основанных на NAnt, идущих на юг, к точке, где никто больше не понимает, что они делают, и нет никакого реального способа отладки этого, кроме как сделать эквивалент хорошего старого printf. В тот момент, когда вы начинаете использовать какой-то оператор if / else или цикл, именно здесь, IMHO, он начинает пахнуть.

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

Единственная проблема с MSBuild - нерегулярная ошибка (особенно в первой версии) или неясное (хотя задокументированное) поведение. И, если это действительно беспокоит вас, будучи привязанным к Microsoft.

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

Не вижу смысла переключаться. Сам MsBuild блокирует вас в рамках, которые вы используете. Если вы используете NAnt, вы можете использовать его во многих средах и выложить в msbuild, чтобы фактически выполнить задачу сборки за вас.

Я фанат NAnt в этом отношении, потому что он немного отделяет вас от фреймворка.

Я создал каркас, который помещает соглашения в автоматизированные сборки, и я построил его на NAnt. Он называется UppercuT и безумно прост в использовании Build Framework.

Automated Создает так же просто, как (1) имя решения, (2) путь контроля исходного кода, (3) название компании для большинства проектов!

http://code.google.com/p/uppercut/

Несколько хороших объяснений здесь: UppercuT

1 голос
/ 29 марта 2009

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

MSBuild требуется время, чтобы понять, но как только вы это сделаете, это очень приятно.

Учебные материалы:

0 голосов
/ 30 июля 2012

Я использую Nant, и мне это нравится. Я использовал MSBuild и ненавидел его из-за этого:

  1. Microsoft заставляет вас следовать своей собственной процедуре сборки, которая настолько присуща их действиям, что я, по крайней мере, не смог заставить ее работать (мне пришлось скомпилировать NET1.1, поэтому мне пришлось смешивать Nant и MSbuild) , Я знаю, что вы можете создать свой собственный файл MSBuild, но я подумал, что его сложно понять и поддерживать.

  2. ItemTypes для выполнения файловых операций слишком сложно следовать. Вы можете сделать так, чтобы Nant делал те же самые вещи, гораздо проще и прямее (мне пришлось создать список ItemType, а затем перейти к операциям с файлами).

  3. В MsBuild вы должны создать свою собственную задачу dll, в Nant вы можете сделать это или вы можете встроить код C # в ваш скрипт, так что его намного проще продвигать и просто создавать весь проект.

  4. Nant работает с Net1.1, MsBuild - нет.

  5. Чтобы установить nant, я даже могу разархивировать и найти его в своем собственном репозитории, чтобы запустить его. Установить MsBuild гораздо сложнее, так как это зависит от многих вещей из Visual Studio и т. Д. (Может быть, я здесь и не прав, но это кажется правдой).

ну это мои мнения ...

0 голосов
/ 14 августа 2008

Я использую MSBuild вместе с Nant, поскольку текущая версия Nant пока не может компилировать приложения .NET 3.5 (то же самое было верно, когда впервые вышел .NET 2.0).

0 голосов
/ 14 августа 2008

Единственная причина, по которой я вижу использование msbuild, - это если вы хотите использовать автоматический сервер сборки, такой как круиз-контроль. Если вы не собираетесь переключаться, то я бы оставил это в покое.

...