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]);
Я сделал подобное расследование на этой неделе. Вот то, что я смог определить:
NAnt:
MSBuild:
Субъективные Различия: (YMMV)
Я недавно переключился от NAnt до MSBuild из-за его способности создать решения VS. Я все еще иногда использую NAnt, все же.
можно также хотеть проверить Задачи Сообщества MSBuild , который похож на NAntContrib.
В то время как я не очень знаком с MsBuild, у меня создается впечатление, что некоторые основные отличия с обеих сторон могут быть добавлены дополнениями:
я недавно должен был разработать проект Silverlight в Nant. Я обнаружил, что жизнь была бы легче, если бы я просто сделал это с MsBuild - я закончил тем, что назвал задачу MsBuild из сценария Nant, таким образом, я предполагаю, что это не слишком необычно к смешиванию и подгонке два.
Кроме того, я предполагаю, что это будет вопросом персонального предпочтения - очевидно, можно справиться некоторый/больше всего функциональности MsBuild из Visual Studio, если это - вещь. Nant кажется более гибким и лучше удовлетворенный, если Вы предпочтете писать сценарии вручную, и если Вы произойдете из мира Java, то Вы, вероятно, будете правильными дома с ним.
Лично, я использую обоих - для того же проекта.
MSBuild силен в создании решений для Visual Studio и проектов - это - то, для чего это сделано.
NAnt является более легко ручным доступным для редактирования, по-моему - особенно, если Вы уже знаете Муравья. NAnt может назвать MSBuild очень легко с NAntContrib. Так, я изготовляю вручную сценарий NAnt, чтобы сделать вещи как копирование созданных файлов, моясь и т.д. - и назвать MSBuild, чтобы сделать, фактические "превращают мой исходный код C# в блоки" часть.
, Если Вы хотите пример этого, посмотрите на мой Буферный файл типа "build" Протокола . (Я не утверждал бы, что это - невероятный сценарий NAnt, но это делает задание.)
Одна из главных ничьих 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, если Вы также гравитируете к функциональному или логическому программированию стиля - если Вы готовы инвестировать немного времени и усилия прежде, чем видеть ощутимые результаты (конечно, я также сильно полагаю, что инвестиции в конечном счете окупаются и можно сделать более мощные вещи более эффективно).
NAnt имеет больше функций из поля, но MSBuild имеет намного лучшую фундаментальную структуру (скалы метаданных объекта), который делает намного легче создать допускающие повторное использование сценарии MSBuild.
MSBuild требует времени для понимания, но после того как Вы делаете это очень хорошо.
Учебные материалы:
Я закончил тем, что использовал оба. При перепроектировании нашей системы сборки я столкнулся с непростой проблемой. А именно, я не смог избавиться от .vcproj (и семейства), потому что мы все использовали VS для обновления файлов проекта, настроек и конфигураций. Поэтому без огромного дублирования и подверженного ошибкам процесса мы не могли бы основать нашу систему сборки на новом наборе файлов.
По этой причине я решил сохранить файлы 'proj' VS и использовать MSBuild (это MSBuild). файлы, по крайней мере VS2005 и VS2008 используют файлы проекта MSBuild). Для всего остального (пользовательская конфигурация, модульное тестирование, упаковка, подготовка документации ...) я использовал NAnt.
Для непрерывной интеграции я использовал CruiseControl. Таким образом, у нас были сценарии CC, которые запускали задания NAnt, которые для сборки использовали MSBuild.
И последнее замечание: MSBuild НЕ поддерживает проекты установки! Таким образом, вы застряли с вызовом DevEnv.com или с использованием Visual Studio напрямую. Это то, чем я в конечном итоге занимался, но я по умолчанию отключил проект установки из всех конфигураций решения, поскольку разработчикам обычно не нужно их создавать, и если они это сделают, они могут выбрать их вручную.
KISS = Используйте MSBuild.
Зачем добавлять что-то еще в микс, если у вас есть что-то, что будет делать разумную работу из коробки? Когда появился MSBuild, NAnt умер. А Mono будет иметь реализацию MSBuild, ( xbuild ).
DRY = Используйте MSBuild.
Спросите себя, чего вы хотите от системы сборки? Мне нужна система сборки, которая также используется моей IDE , а не поддержка двух разных конфигураций.
Лично я бы хотел услышать несколько реальных аргументов в пользу NAnt, потому что я просто не могу думать всего, что действительно выдерживает критику.
Я использую оба в том, что мои NAnt сценарии вызывают MSBuild. Моя основная причина остаться с NAnt - это изоляция . Позвольте мне объяснить, почему я считаю это важным:
Добавление зависимостей в ваш проект. Файл сборки NAnt чужероден для Visual Studio (в моем случае я считаю это профессионалом), поэтому Visual Studio не пытается с ним ничего сделать. Задачи MSBuild встроены в решение и могут относиться к другим задачам MSBuild. Я получил исходный код от кого-то другого только для того, чтобы узнать, что не могу собрать, потому что не были установлены задачи сообщества MSBuild. Что меня особенно расстраивает, так это то, что Visual Studio просто не создавала и выдавала кучу ошибок, из-за которых я терял время на отладку. И это несмотря на то, что запрошенная сборка могла быть выполнена (например, как отладочная сборка) без некоторых дополнительных функций задачи MSBuild. Вкратце: Мне не нравится добавлять зависимости в свой проект, если я могу этого избежать .
Я не доверяю 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.
] Документация и учебники, доступные для 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, но они сейчас отстают.[
]Я заметил, что несколько человек упомянули о необходимости вручную редактировать файлы .csproj (или .vbproj, и т.д.).
MSBuild позволяет настраивать эти .*proj файлы с помощью .user файлов. Если у меня есть проект с именем MyCreativelyNamedProject.csproj и я хочу настроить задачи MSBuild внутри него, я могу создать файл с именем MyCreativelyNamedProject.csproj.user и использовать CustomBeforeMicrosoftCommonTargets и CustomAfterMicrosoftCommonTargets для настройки этих файлов.
Кроме того, и NAnt, и MSBuild могут быть настроены по своему усмотрению с помощью пользовательских задач MSBuild и расширений NantContrib.
Итак, использование NAnt или MSBuild сводится к знакомству:
Стоит также добавить, что MSBuild практически гарантированно работает со всеми новыми версиями .NET и Visual Studio, как только они выходят, в то время как NAnt может иметь некоторое отставание.
Мы используем оба. NAnt отвечает за все "сценарии", такие как копирование, развертывание на IIS , создание пакетов, а MSBuild отвечает за построение решения. Тогда мы сможем избежать проблем с неподдерживаемым .NET 4.0 с помощью новой версии NAnt.
NAnt также более масштабируемый. Если мы хотим перенести сценарии развертывания на производственные серверы, мы только копируем файл сборки и устанавливаем правильную версию .NET - никаких проблем Visual Studio с файлами csproj :)