Новые возможности 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>
  <reference file="mylib.dll" />
  <reference file="mylib.extensions.dll" />
</references>

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

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

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

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

Изменения в секции

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

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

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

В прошлых версиях NuGet в секции , используя шаблоны (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) для текущий версии библиотеки

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

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

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

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

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