Andrey on .NET | Новые возможности NuGet 1.5

Новые возможности NuGet 1.5

Вышла очередная версия NuGet – отличного менеджера библиотек. Давайте посмотрим что в ней нового.

Как получить новую версию

Для загрузки дополнения к Visual Studio достаточно воспользоваться разделом Updates в Extension Manager. Кроме того, разработчикам, которые создают установочные пакеты, потребуется обновление утилиты NuGet.exe. Для этого в командной строке необходимо выполнить команду: nuget.exe u –self.

Шаблоны проектов с включёнными в них установочными пакетами.

Если создать ASP.NET MVC 3 проект, то в него уже будет включён ряд установочных пактов NuGet. Теперь такая возможность есть у любых шаблонов. Подробности её реализации можно прочитать в блоге Marcin On ASP.NET в заметке "Project Templates and preinstalled NuGet packages".

Явные ссылки на сборки

Используя новую секцию <references /> можно явно указать, какие сборки необходимо добавить в References при установке пакета. Например:

<references>
  <reference file="mylib.dll" />
  <reference file="mylib.extensions.dll" />
</references>

В этом случае будут подключены только mylib.dll и mylib.extensions.dll, расположенные в папке, соответствующей заданной в проекте версии .NET. Остальные dll-файлы будут проигнорированы (однако это не отменяет их включение в сам установочный пакет).

При отсутствии секции <references /> включаются все сборки (как и было в прошлых версиях).

Задачи, решаемые с помощью <references />

Рассматриваемая возможность необходима при наличии design-time сборок. Например, dll-файлы Code Contracts должны быть расположены вместе с библиотекой. Но при этом нет необходимости включать их в проект или копировать в папку bin. Такое решение также может потребоваться при использовании библиотек модульных тестов.

Изменения в секции <files>

Пустая секция

Теперь можно, при необходимости, задать пустую секцию <files />. В этом случае NuGet не будет включать какие-либо файлы в установочный пакет.

Возможность указать файлы, исключаемые при создании установочного пакета

В прошлых версиях NuGet в секции <files>, используя шаблоны (wildcards), можно определить какие группы файлов будут включены в установочный пакет. Но что делать, если надо добавить, например, все .txt файлы кроме admin.txt? Раньше приходилось только перечислять их по одному.

В новой версии можно использовать атрибут exclude для указания таких файлов. Например:

<files>
    <file src="*.txt" target="content\docs" exclude="admin.txt" />
</files>

Диалог удаления зависимых установочных пакетов

Теперь, при удалении установочного пакета, NuGet просит с помощью диалога подтвердить удаление пакетов, от которых он зависел.

Улучшения команды Get-Package

Команда Get-Package поддерживает новый параметр: -ProjectName. Например следующий пример выведет список всех установочных пакетов, подключенных в проект Demo:

Get-Package –ProjectName Demo

Поддержка прокси-серверов, которые требуют аутентификации

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

Поддержка репозиториев, которые требуют аутентификации

Аналогично описанному выше, будет выведен диалог, если репозиторий требует аутентификацию.

Улучшения диалога Manage NuGet Packages

Фильтрация проектов в диалоге добавления установочного пакета

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

Комментарии (release notes) для текущий версии библиотеки

Используя новую секцию <releaseNotes /> можно добавлять текст, который будет виден в диалоге добавления установочного пакета. Стоит отметить, что комментарии выводятся только в разделе Updates.

Увеличена производительность репозитория NuGet.org

Теперь поиск установочных пакетов и вывод их списка происходят быстрее.

Исправления ошибок

В общей сложности было исправлено 103 ошибки. Полный список: NuGet Issue Tracker for this release.

Комментарии (8) -

Дополнение: В текущий момент, из-за неназванных технических трудностей, из Visual Studio Gallery убран NuGet Package Manager 1.5 и доступна только версия 1.4. Разработчики обещают выложить новую версию в ближайшее время.

@ Andrey:

Хорошо, что прокомментировал, а я уже думал со студией что-то случилось... Версия nuget'а не обновляется...

@ Calabonga: Ага, пока только утилита для командной строки обновляется.

А зачем он вообще нужен?
Обычно ведь если и берут какие-то либы, то обновляют их только тогда, когда там пофиксился неприятный для проекта баг, либо появилась нужная проекту функциональность. Иначе нафиг надо обновлять и смотреть не появилось ли каких багов.

@ Sergey: Автоматизация самого процесса установки. NuGet сам загружает установочный пакет библиотеки, а также те библиотеки от которых она зависит. Затем ставит в проект DLL-ки под заданную в нем платформу, правит при необходимости конфиги, копирует доп. файлы, может генерировать код. Конечно, все это можно делать вручную, но с NuGet в разы быстрее. Добавить нужную библиотеку в проект - дело нескольких секунд.

Ну и плюс - возможность создания репозитория своих библиотек (я об этом писал в статьях про NuGet). Удобно даже для одного разработчика, если работает с разных ПК (например, из офиса, из дома и с ноута). Причем не обязательно нужен сервер - может хватить папки и средства её синхронизации онлайн (если библиотек не так и много).

@ Andrey:

От себя хочу добавить, что NuGet может не только добавить библиотеки но и:
- удалить
- проверить обновления
- загрузить зависимые...

@ Sergey:

Если у тебя один проект, тогда "да" - можно обойтись и без nuget'а. Но когда у тебя их более двух десятков и обновить библиотеку нужно хотя бы в 5 - это уже займет время, а nuget сделает это практически автоматически...(сорри за каламбур)

Задержавшийся NuGet Package Manager 1.5 для Visual Studio 2010 наконец доступен для загрузки. Обновляем или устанавливаем через VS Extension Manager.

Добавить комментарий