Выпущена новая версия пакетного менеджера NuGet 1.5


Недавно пакетный менеджер 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 запросит у пользователя действие по отношению к зависимостям: удалить их или нет.

image

Улучшения в команде 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). Эта информация отображается только при просмотре обновлений для пакета, так что ее следует добавлять только в версии пакета после первого выпуска.

image

Для того чтобы добавить пояснения к выпуску пакета, используйте новый раздел метаданных <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 />.
Comments (0)

Skip to main content