NAnt или MSBuild, который выбрать и когда?

setCookie () ожидает строку как значение, но переменная $ rov содержит массив, вызывающий ошибку.

вы можете использовать решение json_encode / json_decode , предложенное @Curious_mind, или можете использовать сериализацию / десериализацию .

setcookie('cookie', serialize($rov), time()+3600);

Then unserialize data:

$data = unserialize(

setCookie () ожидает строку как значение, но переменная $ rov содержит массив, вызывающий ошибку.

вы можете использовать решение json_encode / json_decode , предложенное @Curious_mind, или можете использовать сериализацию / десериализацию .

[110]COOKIE['cookie'], ["allowed_classes" => false]);
159
задан Peter Mortensen 30 August 2013 в 08:38
поделиться

12 ответов

Я сделал подобное расследование на этой неделе. Вот то, что я смог определить:

NAnt:

  • Межплатформенный (поддерживает Linux / Моно). Это может быть удобно для установки веб-сайта к нескольким целям (то есть, Apache Linux и Windows IIS), например.
  • 95%, подобных в синтаксисе Муравью (легкий для текущих пользователей Муравья или разработчиков Java для взятия)
  • Интеграция с NUnit для рабочих модульных тестов как часть сборки, и с NDoc для пропередачи по каналу документации.

MSBuild:

  • Встроенный к.NET.
  • Интегрированный с Visual Studio
  • , Легким начать с MSBuild в Visual Studio - это - все негласно. Если Вы хотите стать глубже, можно вручить редактированию файлы.

Субъективные Различия: (YMMV)

  • документация NAnt немного более проста. Например, Ссылка Задачи MSBuild списки "Задача Csc - Описывает задачу Csc и ее параметры". (спасибо за "справку"?), по сравнению с Ссылка Задачи NAnt "csc - Компиляции программы C#". ОБНОВЛЕНИЕ: я заметил , документация MSBuild была улучшена и намного лучше теперь (вероятно, наравне с NAnt).
  • Не легкий выяснить, как отредактировать источник сценария сборки (*.*proj файл) непосредственно из Visual Studio. С NAnt у меня просто есть обработка Visual Studio .build сценарий как XML-файл.
  • , По-видимому, в Visual Studio, веб-приложение Проекты не получает *.*proj файл по умолчанию, таким образом, я испытал большие затруднения при выяснении, как даже заставить MSBuild работать на моем для создания сценария развертывания.
  • NAnt не встроен к Visual Studio и должен быть добавлен, или с Дополнением, или как "Внешний Инструмент". Это - что-то вроде боли для установки.
  • (Редактирование:) Один из моих коллег поднял это - если Вы хотите настроить машину сборки с помощью CruiseControl для непрерывной интеграции, CruiseControl интегрируется с NAnt приятно из поля. ОБНОВЛЕНИЕ: CruiseControl также имеет задача .
  • MSBuild, см. комментарии ниже для полного и актуального обсуждения субъективных различий.
96
ответ дан Peter Mortensen 23 November 2019 в 21:36
поделиться

Я недавно переключился от NAnt до MSBuild из-за его способности создать решения VS. Я все еще иногда использую NAnt, все же.

можно также хотеть проверить Задачи Сообщества MSBuild , который похож на NAntContrib.

1
ответ дан petr k. 23 November 2019 в 21:36
поделиться

В то время как я не очень знаком с MsBuild, у меня создается впечатление, что некоторые основные отличия с обеих сторон могут быть добавлены дополнениями:

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

Кроме того, я предполагаю, что это будет вопросом персонального предпочтения - очевидно, можно справиться некоторый/больше всего функциональности MsBuild из Visual Studio, если это - вещь. Nant кажется более гибким и лучше удовлетворенный, если Вы предпочтете писать сценарии вручную, и если Вы произойдете из мира Java, то Вы, вероятно, будете правильными дома с ним.

6
ответ дан mmacaulay 23 November 2019 в 21:36
поделиться

Лично, я использую обоих - для того же проекта.

MSBuild силен в создании решений для Visual Studio и проектов - это - то, для чего это сделано.

NAnt является более легко ручным доступным для редактирования, по-моему - особенно, если Вы уже знаете Муравья. NAnt может назвать MSBuild очень легко с NAntContrib. Так, я изготовляю вручную сценарий NAnt, чтобы сделать вещи как копирование созданных файлов, моясь и т.д. - и назвать MSBuild, чтобы сделать, фактические "превращают мой исходный код C# в блоки" часть.

, Если Вы хотите пример этого, посмотрите на мой Буферный файл типа "build" Протокола . (Я не утверждал бы, что это - невероятный сценарий NAnt, но это делает задание.)

45
ответ дан Jon Skeet 23 November 2019 в 21:36
поделиться

Одна из главных ничьих MSBuild для меня (на платформах Windows) - то, что он стал частью самой.NET. Это означает, что любая машина Windows, которая актуальна с Windows Update, будет иметь MSBuild в наличии. Добавьте к этому то, что компилятор C# является также частью самой.NET, и у Вас есть платформа, которая может разработать проекты на чистых машинах. Никакая потребность установить громадину Visual Studio. NAnt, с другой стороны, должен быть явно установлен, прежде чем сборка может быть инициирована.

Только для справки, я использовал NMake, Сделайте, Муравей, Грабли, NAnt и MSBuild на нетривиальных сборках в прошлом (в том порядке). Моим фаворитом является MSBuild, передает (и я не одобряю его, потому что "это - то, что Visual Studio использует"). По моему скромному мнению, это - очень недооцениваемый инструмент сборки.

я сравнил бы NAnt по сравнению с MSBuild к различию между процедурным и функциональным программированием. NAnt довольно прост и you-get-what-you-see. MSBuild, с другой стороны, требует немного более мысли. Кривая обучения более крута. Но как только Вы "получаете его", можно сделать некоторые удивительные вещи с ним.

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

77
ответ дан Milan Gardian 23 November 2019 в 21:36
поделиться

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

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

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

20
ответ дан Peter Mortensen 23 November 2019 в 21:36
поделиться

Я закончил тем, что использовал оба. При перепроектировании нашей системы сборки я столкнулся с непростой проблемой. А именно, я не смог избавиться от .vcproj (и семейства), потому что мы все использовали VS для обновления файлов проекта, настроек и конфигураций. Поэтому без огромного дублирования и подверженного ошибкам процесса мы не могли бы основать нашу систему сборки на новом наборе файлов.

По этой причине я решил сохранить файлы 'proj' VS и использовать MSBuild (это MSBuild). файлы, по крайней мере VS2005 и VS2008 используют файлы проекта MSBuild). Для всего остального (пользовательская конфигурация, модульное тестирование, упаковка, подготовка документации ...) я использовал NAnt.

Для непрерывной интеграции я использовал CruiseControl. Таким образом, у нас были сценарии CC, которые запускали задания NAnt, которые для сборки использовали MSBuild.

И последнее замечание: MSBuild НЕ поддерживает проекты установки! Таким образом, вы застряли с вызовом DevEnv.com или с использованием Visual Studio напрямую. Это то, чем я в конечном итоге занимался, но я по умолчанию отключил проект установки из всех конфигураций решения, поскольку разработчикам обычно не нужно их создавать, и если они это сделают, они могут выбрать их вручную.

2
ответ дан Ash 23 November 2019 в 21:36
поделиться

KISS = Используйте MSBuild.

Зачем добавлять что-то еще в микс, если у вас есть что-то, что будет делать разумную работу из коробки? Когда появился MSBuild, NAnt умер. А Mono будет иметь реализацию MSBuild, ( xbuild ).

DRY = Используйте MSBuild.

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

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

19
ответ дан 23 November 2019 в 21:36
поделиться

Я использую оба в том, что мои NAnt сценарии вызывают MSBuild. Моя основная причина остаться с NAnt - это изоляция . Позвольте мне объяснить, почему я считаю это важным:

  1. Добавление зависимостей в ваш проект. Файл сборки NAnt чужероден для Visual Studio (в моем случае я считаю это профессионалом), поэтому Visual Studio не пытается с ним ничего сделать. Задачи MSBuild встроены в решение и могут относиться к другим задачам MSBuild. Я получил исходный код от кого-то другого только для того, чтобы узнать, что не могу собрать, потому что не были установлены задачи сообщества MSBuild. Что меня особенно расстраивает, так это то, что Visual Studio просто не создавала и выдавала кучу ошибок, из-за которых я терял время на отладку. И это несмотря на то, что запрошенная сборка могла быть выполнена (например, как отладочная сборка) без некоторых дополнительных функций задачи MSBuild. Вкратце: Мне не нравится добавлять зависимости в свой проект, если я могу этого избежать .

  2. Я не доверяю Visual Studio настолько, насколько я могу бросить ее команду разработчиков. Это восходит к ранним дням разработки Visual Studio, когда она уничтожила мой HTML. Я, например, до сих пор не пользуюсь дизайнером (недавно на конференции я обнаружил, что коллеги сделали то же самое). Я обнаружил, что Visual Studio может испортить зависимости и номера версий в файле DLL (я не могу воспроизвести это, но это происходило в проекте постоянно и вызывало много горя и потери времени). Я прибег к процедуре сборки, в которой Visual Studio используется только для сборки в режиме отладки. Для производства я использую NAnt, чтобы контролировать все извне . Visual Studio больше не сможет вмешиваться, если я создаю с помощью NAnt.

PS: Я веб-разработчик и не занимаюсь разработкой Windows Forms.

Я, например, до сих пор не пользуюсь дизайнером (недавно на конференции я обнаружил, что коллеги сделали то же самое). Я обнаружил, что Visual Studio может испортить зависимости и номера версий в файле DLL (я не могу воспроизвести это, но это происходило в проекте постоянно и вызывало много горя и потери времени). Я прибег к процедуре сборки, в которой Visual Studio используется только для сборки в режиме отладки. Для производства я использую NAnt, чтобы контролировать все извне . Visual Studio больше не сможет вмешиваться, если я создаю с помощью NAnt.

PS: Я веб-разработчик и не занимаюсь разработкой Windows Forms.

Я, например, до сих пор не пользуюсь дизайнером (недавно на конференции я обнаружил, что коллеги сделали то же самое). Я обнаружил, что Visual Studio может испортить зависимости и номера версий в файле DLL (я не могу воспроизвести это, но это происходило в проекте постоянно и вызывало много горя и потерянного времени). Я прибег к процедуре сборки, в которой Visual Studio используется только для сборки в режиме отладки. Для производства я использую NAnt, чтобы контролировать все извне . Visual Studio больше не сможет вмешиваться, если я создаю с использованием NAnt.

PS: Я веб-разработчик и не занимаюсь разработкой Windows Forms.

но в проекте это происходило постоянно и вызывало много горя и потерянного времени). Я прибег к процедуре сборки, в которой Visual Studio используется только для сборки в режиме отладки. Для производства я использую NAnt, чтобы контролировать все извне . Visual Studio больше не сможет вмешиваться, если я создаю с использованием NAnt.

PS: Я веб-разработчик и не занимаюсь разработкой Windows Forms.

но в проекте это происходило постоянно и вызывало много горя и потерянного времени). Я прибег к процедуре сборки, в которой Visual Studio используется только для сборки в режиме отладки. Для производства я использую NAnt, чтобы контролировать все извне . Visual Studio больше не сможет вмешиваться, если я создаю с использованием NAnt.

PS: Я веб-разработчик и не занимаюсь разработкой Windows Forms.

10
ответ дан 23 November 2019 в 21:36
поделиться
[

] Документация и учебники, доступные для NAnt, облегчают процесс обучения построению сценариев с помощью NAnt. Как только я освоил навыки работы в АНнт и создал сценарии, я начал переводить эти знания в MSBuild (я сделал X в АНнт, как мне сделать X в MSBuild?). Документация Microsoft обычно предполагает довольно высокий уровень знаний, прежде чем она будет полезна.[

] [

]Причина перехода с NAnt на MSBuild заключается в том, что MSBuild более современен. К сожалению, последний выпуск NAnt состоялся 8 декабря 2007 года, в то время как MSBuild 4.0 (.NET 4.0) не за горами. Похоже, что проект NAnt умер.[

] [

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

]
1
ответ дан 23 November 2019 в 21:36
поделиться

Я заметил, что несколько человек упомянули о необходимости вручную редактировать файлы .csproj (или .vbproj, и т.д.).

MSBuild позволяет настраивать эти .*proj файлы с помощью .user файлов. Если у меня есть проект с именем MyCreativelyNamedProject.csproj и я хочу настроить задачи MSBuild внутри него, я могу создать файл с именем MyCreativelyNamedProject.csproj.user и использовать CustomBeforeMicrosoftCommonTargets и CustomAfterMicrosoftCommonTargets для настройки этих файлов.

Кроме того, и NAnt, и MSBuild могут быть настроены по своему усмотрению с помощью пользовательских задач MSBuild и расширений NantContrib.

Итак, использование NAnt или MSBuild сводится к знакомству:

  • Если вы уже знакомы с Ant, используйте NAnt. Кривая обучения будет очень легкой.
  • Если вы не знакомы ни с одним из этих инструментов, MSBuild уже интегрирован в Visual Studio и не требует дополнительных инструментов.

Стоит также добавить, что MSBuild практически гарантированно работает со всеми новыми версиями .NET и Visual Studio, как только они выходят, в то время как NAnt может иметь некоторое отставание.

14
ответ дан 23 November 2019 в 21:36
поделиться

Мы используем оба. NAnt отвечает за все "сценарии", такие как копирование, развертывание на IIS , создание пакетов, а MSBuild отвечает за построение решения. Тогда мы сможем избежать проблем с неподдерживаемым .NET 4.0 с помощью новой версии NAnt.

NAnt также более масштабируемый. Если мы хотим перенести сценарии развертывания на производственные серверы, мы только копируем файл сборки и устанавливаем правильную версию .NET - никаких проблем Visual Studio с файлами csproj :)

0
ответ дан 23 November 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: