Andrey on .NET | Вышел NuGet 2.1

Вышел NuGet 2.1

Стала доступна очередная версия отличного пакетного менеджера NuGet.

Что нового?

Возможность редактирования данных источников установочных пакетов

Раньше, для изменения данных источника, было необходимо удалить его из списка и добавить обратно с новыми параметрами. Теперь можно модифицировать имя или адрес прямо в диалоге Options > Package Manager > Package sources.

Повторная установка библиотек

У консольной команды Update-Package появился новый ключ: –Reinstall. При его использовании, независимо от наличия обновлений, пакет будет удален из проекта и установлен заново. Например:

PM> Update-Package EntityFramework -Reinstall
Successfully removed 'EntityFramework 5.0.0' from MyProject.
Successfully uninstalled 'EntityFramework 5.0.0'.
Successfully installed 'EntityFramework 5.0.0'.
Successfully added 'EntityFramework 5.0.0' to MyProject.

Это нововведение очень полезно при смене платформы. В этой ситуации зачастую нужно заново установить все используемые библиотеки для того, чтобы были скопированы и подключены соответствующие версии их сборок. Например, версии Entity Framework 5.0 для .NET 4.0 и .NET 4.5 отличаются по предоставляемому функционалу. В этом случае повторная установка просто необходима при изменении платформы проекта.

Улучшен поиск установочных пакетов в диалоге Manage NuGet Packages

По заявлению разработчиков NuGet, была не только оптимизирована скорость поиска, но и улучшена релевантность его результатов.

Иерархия NuGet.config

В новой версии появилась возможность определять конфигурацию NuGet для отдельных решений или проектов. Для изменения параметров достаточно разместить в соответствующей папке NuGet.config с новыми значениями. Поиск файлов конфигурации осуществляется в следующем порядке:

  1. .nuget\NuGet.config (конфигурация NuGet на уровне решения, если была включена опция восстановления установочных пакетов);
  2. Рекурсивный обход из папки проекта до корневой папки;
  3. Общая конфигурация в NuGet.config (расположен в %appdata%\NuGet\nuget.config).

Теперь можно, например, добавить источник установочных пактов, специфичный для конкретного решения и не доступный в других. Допустим существует папка C:\MyTeam1, где расположены несколько различных проектов. Разместим в ней файл NuGet.config, который добавляет новый источник:

<configuration>
  <packageSources>
    <add key="Official project team source" value="http://teamserver/api/v2/" />
  </packageSources>
  <disabledPackageSources />
  <activePackageSource>
    <add key="Official project team source" value="http://teamserver/api/v2/" />
  </activePackageSource>
</configuration>

Теперь Official project team source доступен всем проектам внутри C:\MyTeam1. Например, результатом выполнения команды nuget.exe sources будет:

1. NuGet official package source [Enabled]
https://nuget.org/api/v2/
2. Official project team source [Enabled]
http://teamserver/api/v2/

При этом из других папок данный источник будет недоступен.

Указание места размещения установочных пакетов

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

Для исправления такой ситуации в версии 2.1 добавлена возможность самостоятельно определять место их хранения с помощью настройки в NuGet.config:

<configuration>
  <config>
    <add key="repositoryPath" value="C:\MyTeam1\TeamPackages" />
  </config>
  ... 
</configuration>

Например, если разместить такой файл в папке C:\MyTeam1, то все находящиеся в ней решения будут использовать C:\MyTeam1\TeamPackages для хранения установочных пакетов.

Поддержка переносимых библиотек (Portable libraries)

Переносимые библиотеки – это библиотеки которые могут использоваться без модификации на различных платформах: .NET 4.0 и выше, Silverlight 4 и выше, Windows Phone 7 и выше, .NET for Windows Store и XBox. Обратите внимание, что NuGet в данный момент не поддерживает XBox.

Для поддержи библиотек этого типа соглашение о наименовании папок было дополнено форматом:

portable-{framework 1}+{framework 2}+{framework n}

Например, portable-win+net40+sl40+wp означает, что в данной папке расположены переносимые библиотеки, поддерживающие все перечисленных выше платформы, за исключением XBox.

Поддержка Windows Store

Для указания библиотеками в качестве поддерживаемых платформ Windows 8 Store и Windows Phone были введены следующие идентификаторы:

  • Windows 8 Store: Windows, Windows8, win, win8 (ранее использовались: winRT45, .NETCore45);
  • Windows Phone 7: wp, wp7, WindowsPhone, WindowsPhone7 (ранее: silverlight3-wp);
  • Windows Phone 7.5 (Mango): wp71, WindowsPhone71 (ранее: silverilght4-wp71);
  • Windows Phone 8: wp8, WindowsPhone8

Старые имена поддерживаются в NuGet 2.1, однако рекомендуется использовать новые варианты.

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

С выходом версии 2.1 в NuGet Issue Tracker была закрыта 81 ошибка.

Как загрузить новую версию?

Установить или обновить NuGet можно с помощью диалога Extension Manager в Visual Studio или загрузив его со страницы VS Extension Gallery.

Утилита для командной строки доступна со страницы проекта на CodePlex. Если же nuget.exe уже был скопирован на компьютер разработчика, то обновить его можно следующим вызовом:

nuget.exe update –self

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