
Недавно пакетный менеджер NuGet для платформы .NET получил очередное обновление до версии 1.5. Ниже перечислены нововведения в новой версии.
Шаблоны проектов с предустановленными пакетами NuGet
Во время создания нового проекта ASP.NET MVC 3 библиотеки jQuery, включенные в шаблон проекта добавляются в проект в качестве пакетов NuGet. Шаблон проекта ASP.NET MVC 3 содержит набор пакетов NuGet, которые устанавливаются каждый раз, когда на базе шаблона создается новый проект. Эта возможность включать пакеты NuGet в шаблоны проектов Visual Studio теперь является встроенной функцией NuGet, что позволяет использовать ее любому типу проекта.
Для того, чтобы узнать больше подробностей о данной возможности, вы можете прочитать эту запись блога от разработчика данной функции.
Явные ссылки на сборки
Добавлен новый элемент конфигурации пакетов <references />, который позволяет явно задать те сборки в пакете, на которые необходимы ссылки. Например, если вы добавите следующий код:
<references>
<reference file="xunit.dll" />
<reference file="xunit.extensions.dll" />
</references>
То теперь ссылки в проекте будут добавлены только для двух сборок xunit.dll и xunit.extensions.dll, независимо от того, сколько их расположено в папке lib. Если же это описание пропущено, то в проект будут добавлены ссылки на все сборки, которые расположены в папке lib.
Для чего нужна эта функция?
Эта функция поддерживает работу со сборками используемыми только во время проектирования или разработки. Например, при использовании Code Contracts, сборки с контрактами должны располагаться вместе с обычными сборками и быть доступны для Visual Studio, однако на сборки с контрактами не должны существовать ссылки в проекте и их не требуется копировать в папку bin.
Точно так же дело обстоит с фреймворками для модульного тестирования, например, XUnit, которые требуют доступ к собственным вспомогательным сборкам, которые, в тоже время, должны быть исключены из списка ссылок на сборки проекта.
Добавлена возможность исключать файлы из NuSpec
Элемент <file> в файле .nuspec может быть использован для указания включения указанных с помощью маски файлов в проект. При использовании маски не существовало возможности исключить какие-то из файлов. В этом обновлении такая возможность появилась. Например, вы хотите включить в проект все текстовые файлы с расширением .txt, кроме одного из них:
<files>
<file src="*.txt" target="content\docs" exclude="admin.txt" />
</files>
Вы можете использовать точку с запятой для перечисления нескольких файлов:
<files>
<file src="*.txt" target="content\docs" exclude="admin.txt;log.txt" />
</files>
Или даже использовать маску для исключения набора файлов:
<files>
<file src="tools\*.*" target="tools" exclude="*.bak" />
</files>
Диалог с запросом на удаление зависимых пакетов
Во время удаления пакета, который имеет зависимости, NuGet запросит у пользователя действие по отношению к зависимостям: удалить их или нет.

Улучшения в команде Get-Package
Команда Get-Package теперь поддерживает параметр –ProjectName. Например, следующая команда выведет список установленных пакетов для проекта с названием “A”.
Get-Package –ProjectName A
Поддержка аутентификации на прокси
Во время использования NuGet за прокси-серверами, которые требуют аутентификации, NuGet теперь запросит необходимые данные. Ввод этих данных позволит NuGet подключится к удаленным репозиториям.
Поддержка аутентификации репозиториев
NuGet теперь поддерживает подключение в частным репозиториям пакетов, для которых требуется упрощенная или NTLM-аутентификации. Поддержка Digest-аутиентификации будет добавлена в будущем выпуске NuGet.
Улучшения производительности в репозитории NuGet.org
Мы произвели некоторые улучшения, которые положительно повлияли на производительность галереи пакетов nuget.org. Доступ к списку пакетов и поиск теперь работают быстрее.
Фильтрация проектов в диалоге решения
В диалоге на уровне решения (Solution-level dialog), во время запроса в какие проекты устанавливать пакет будут показаны только те проекты, для которых пакет может быть применим.
Пояснения к выпуску пакета
Пакеты NuGet теперь могут включать пояснения к выпуску (release notes). Эта информация отображается только при просмотре обновлений для пакета, так что ее следует добавлять только в версии пакета после первого выпуска.

Для того чтобы добавить пояснения к выпуску пакета, используйте новый раздел метаданных <releaseNotes /> в файле конфигурации NuSpec.
Улучшения раздела <files /> в NuSpec
Файл .nuspec теперь допускает использование пустого элемента <files />, который сообщает NuGet о том, что в пакет не должны быть включены никакие файлы.
Исправления ошибок
В NuGet 1.5 было исправлено и закрыто 107 элементов багтрекера, 103 из них были помечены как баги. С полным списком исправлений можно познакомиться по этой ссылке.
Важные исправления
- Issue 1273: packages.config стал более дружелюбен к контролю версий.
- Issue 844: нормализованы номера версий, так что
Install-Package 1.0
работает с пакетами версий1.0.0
. - Issue 1060: во время создания пакета через NuGet.exe, флаг
-Version
переопределяет элемент<version />
.