Подтвердить что ты не робот

OpenWrap vs NuGet

В чем разница между OpenWrap и NuGet. И что вы предпочитаете?

4b9b3361

Ответ 1

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

Таким образом, наши функции нацелены на динамическое разрешение зависимостей, будь то для составных приложений WPF, разработки веб-приложений или общесистемных утилит. Это делает нашу реализацию очень отличной от того, что делает NuGet.

Итак, вот разные вещи (я, вероятно, забуду много, но хорошо).

  • Нет зависимости от визуальной студии и сосредоточиться на производительности в командной строке, а не в пользовательском интерфейсе
  • Никакая зависимость от powershell, OW не имеет собственной системы команд, которая позволяет вам разрабатывать, развертывать и выполнять свои собственные команды, будь то из нашей оболочки (инструмент o.exe) или из самого MSBuild.
  • OpenWrap использует OpenWrap для сборки и развертывания, и на каждом шагу он удобен для xcopy.
  • Имеет общесистемный репозиторий пакетов, поэтому вы можете развернуть свои служебные команды один раз, а не один раз на решение
  • Поддерживает динамическое разрешение зависимостей во время выполнения, если вы хотите сделать это
  • Имеет расширяемый формат пакета, поэтому вы можете создавать новые типы зависимостей в пакете и иметь поддержку OpenWrap, которую вы используете в своем приложении.
  • Поддерживает как пакеты OpenWrap, так и пакеты и репозитории NuGet.
  • Останавливается от осложнений XML и OData и идет на простые текстовые DSL, которые легко и быстро изучаются.
  • Поддержка встроенной сборки, поэтому вы можете создавать и упаковывать свое решение за один раз.
  • Поддерживает пользовательские репозитории в общем сетевом ресурсе, который можно публиковать из оболочки openwrap или задач msbuild.
  • Обеспечивает выравнивание зависимостей, автоматически выбирая, какая комбинация версий пакетов разрешена.
  • Интеграция Resharper означает, что любое изменение, которое вы делаете для своих зависимостей, отражается в VS в режиме реального времени
  • Интеграция TeamCity означает, что вы можете создавать, упаковывать и развертывать свой пакет, используя точно такой же процесс, из MSBuild script или из командной строки
  • Расширяемые сборщики означают, что вы можете изменить способ создания сборки в OpenWrap
  • Поддержка тестовых бегунов и отгрузочных тестов вместе с пакетами
  • Использует поддерживаемые точки расширения MSBuild, чтобы включить ссылки на сборку, и оставляет код, который вы построили самостоятельно. Когда вы отправляете двоичные файлы, у вас нет зависимостей кода openwrap, только во время сборки.

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

Ответ 2

Просто хотел услышать некоторые мысли со стороны NuGet. Seb оставляет несколько деталей, которые стоит указать.

  • В то время как наш основной пользовательский интерфейс основан на VS, базовая сборка NuGet не имеет связей с VS. Продукт веб-страниц ASP.NET имеет веб-менеджер пакетов. Я написал сообщение в блоге, в котором показан пример использования NuGet для создания веб-сайта, который обновляется во время выполнения. http://haacked.com/archive/2011/01/15/building-a-self-updating-site-using-nuget.aspx
  • NuGet предоставляет мощную консоль PowerShell. Пакеты NuGet могут добавлять новые команды в консоль. См. http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/. Как и раньше, это один клиент ядра NuGet и NuGet не требует его.
  • NuGet доступен для установки через VS Extension Gallery и очень легко начать работу сразу.
  • NuGet поддерживает указание клиента в каталоге (или общем сетевом ресурсе), содержащем набор пакетов, и автоматически обрабатывает его как репозиторий. Поэтому, если вы не хотите иметь дело с OData, вам не обязательно это делать. Но мы также включаем реализацию нашей галереи, поэтому нет необходимости вручную обращаться с OData/XML в любом случае.
  • NuGet не требует развертывания какой-либо части NuGet как части вашего приложения. Он отключает руки и фокусируется на автоматическом выполнении шагов, которые вы можете предпринять, не используя NuGet для приобретения и развертывания ваших зависимостей. Чтобы быть ясным, как указывает Seb, OpenWrap также не работает. Я просто хотел дать понять, что NuGet тоже не требует этого.

Ответ 3

Один из ключевых принципов NuGet (и важная разница с OpenWrap) заключается в том, что он не пытается изменить способ работы. Вместо этого, это делает намного легче делать то, что вы уже делаете сегодня.

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

В таком сценарии как NuGet, так и OW упростят ввод этих ссылок, но главное отличие заключается в том, что NuGet делает это совершенно неинвазивным способом. т.е. он будет получать двоичные файлы на ваш компьютер и ссылаться на них так же, как если бы вы сделали это вручную. После этого ваш файл проекта полностью "нормальный", без каких-либо связей с NuGet при сборке или времени выполнения.

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

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

Есть много других отличий (таких как поддержка VS VS в NuGet), но это то, что я рассматриваю как самое фундаментальное различие между ними.