Поддерживается ли nAnt и подходит ли он для .net 3.5 / VS2008?

Я использую MSBuild для создания своих материалов. Я хочу использовать CruiseControl.net как Build Server.

Сейчас CCNET часто ссылается на nAnt, но похоже, что ccnet может делать большую часть того, что nant может делать через конфигурацию проекта и msbuild. Кроме того, nAnt кажется немного неподдерживаемым, с бета-версией, которой уже почти год.

Короче: я на самом деле вполне доволен MSBuild (тем более, что это "официальный" интерфейс компилятора) и немного неудобен с nAnt, но я не хочу судить преждевременно.

Какие могут быть причины использовать nAnt вместо MSBuild? Особенно с ccnet, который, похоже, немного перекрывается с nant с точки зрения функций (и добавления материалов, связанных с автоматической сборкой)

Ответов (7)

Решение

Если вас вполне устраивает MSBuild, я бы остановился на MSBuild. Это может быть один из тех случаев, когда вы предпочтете инструмент, который вы изучаете первым. Я начал с NAnt и никак не могу привыкнуть к MSBuild. Я уверен, что они оба будут еще какое-то время.

Между ними есть некоторые фундаментальные различия, которые, вероятно, лучше всего подчеркнуты этим разговором между некоторыми фанатами NAnt и Microsoft .

Интересно, что Джереми Миллер задал прямо противоположный вопрос в своем блоге в прошлом году.

Честно говоря, это зависит от того, что лучше подходит для вашей среды. Если вы используете много инструментов сторонних производителей, nunit, ccnet, ncover. Вероятно, вы найдете лучшую поддержку с nant. В качестве альтернативы, если вы используете MSTest, TFSBuild, вы, вероятно, найдете MSBuild лучшей средой. Я бы изучил оба варианта и использовал тот, который больше подходит для вашей среды.

Если у вас уже есть набор настраиваемых задач, которые вы используете с nAnt, придерживайтесь его - вы не получите многого с MSBuild. Тем не менее, похоже, что nAnt не может делать ничего такого, чего не может сделать MSBuild по своей сути. Оба могут вызывать внешние инструменты, оба могут запускать настраиваемые задачи на основе .Net, и у обоих есть куча задач сообщества.

Мы используем MSBuild по той же причине, что и вы - сейчас это система сборки по умолчанию для VS, и у нас не было никаких специфических для nAnt вещей, о которых нужно было беспокоиться.

В MSBuildCommunityTasks хорошая третьей сторона задача база для начала, и охватывает большинство пользовательских вещей я когда - либо делал в Нан, в том числе VSS и поддержки Subversion.

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

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

CC.NET - это просто технология сервера сборки, а не технология сценария сборки. Мы используем CC.NET в работе, чтобы без проблем вызывать сценарии сборки MSBuild.

NAnt - более старый и зрелый язык сценариев сборки, но оба они похожи по принципу работы. Есть очень мало вещей, которые я мог бы сделать в NAnt, чего я не могу сделать и в MSBuild, так что все сводится к тому, что вам удобнее. Что касается того, насколько активен NAnt, не проходите мимо, когда была последняя версия ... вместо этого пройдите, когда была последняя ночная сборка. В NAnt обычно проходит много времени между выпусками, но ночные сборки обычно довольно стабильны.

Как и на то, что уже указали многие люди, ответ здесь - «в зависимости от обстоятельств». В NAnt есть такие вещи, как повторение операций , которые намного проще и понятнее. Смотрите на форумах MSDN для обсуждения по этому поводу.

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

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