Andrey on .NET | Выпущен NuGet 2.5

Выпущен NuGet 2.5

Вышла в свет новая версия NuGet – менеджера библиотек, который не нуждается в представлении. В этот раз добавлены новые интересные возможности как для пользователей, так и для создателей пакетов.

Что нового для пользователей?

Возможность перезаписывать существующие файлы

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

Для команды Install-Package и утилиты NuGet.exe добавлен ключ –FileConflictAction, который позволяет определить поведение по умолчанию. Его возможные значения: Overwrite и Ignore.

Обновление всех пакетов нажатием одной кнопки

Хорошая новость пользователей диалогового интерфейса NuGet. Теперь и в нем можно обновлять все пакеты сразу. Для этого в Manage NuGet Packages была добавлена кнопка Update All.

Зависимости больше не обновляются без необходимости

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

Более подробные отчеты о http запросах

При указании ключа -verbosity detailed в вывод NuGet.exe будут включены описания всех сделанных http запросов.

Поддержка указания необходимой конфигурации

Теперь можно задавать файл конфигурации NuGet для каждой команды. Для этого нужно указать ключ -ConfigFile:

NuGet.exe sources add -name MyPoject -source http://srv -ConfigFile C:\MyProject\.nuget\nuget.config

По умолчанию по прежнему используется конфигурация из %AppData%\nuget\nuget.config.

Что нового для создателей установочных пакетов?

Возможность подключения разных сборок для различных платформ

Если до версии 2.5 все сборки подключались в проект для любой платформы, то теперь можно указать различные варианты. Выглядеть в .nuspec это будет следующим образом:

<references> 
    <group targetFramework="net45"> 
        <reference file="a.dll" />
    </group> 
    <group targetFramework="netcore45"> 
        <reference file="b.dll" /> 
    </group>
    <group>
        <reference file="c.dll" />
    </group>
</references>

При установке пакета NuGet составляет список из сборок в:

  • папке lib (с указанной платформой);
  • группе для текущей платформы;
  • общей группе (без targetFramework).

В результате в References проекта будут добавлены все файлы из этого списка.

Обработка ссылок на другие проекты

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

Если указанном проекте содержится спецификация .nuspec, то в пакет автоматически добавляется зависимость от него. Иначе все его файлы (dlls/pdb/exe и контент) становятся частью пакета, а он сам обрабатывается аналогичным образом.

В результате, все проекты с .nuspec становятся зависимостями, а остальные интегрируются в пакет.

Возможность указания минимальной версии NuGet

С ростом числа новых возможностей появилась необходимость указывать минимальную версию NuGet, способную правильно установить созданный пакет. Теперь это можно сделать, указав в .nuspec:

<metadata minClientVersion="2.6">

Если у пользователя будет версия ниже заданной, то он получит сообщение о необходимости обновить NuGet.

Команда NuGet.exe push теперь поддерживает сетевые и локальные папки

Начиная с версии 2.5 утилиту NuGet.exe можно использовать для отправки установочных пакетов в сетевые и локальные папки. В этом случае происходит простое копирование файла в заданное место.

NuGet.exe push -source \\SomeCompanyServer\Repo\ SomePackage.1.0.0.nupkg

Автоматический импорт файлов .targets и .props в MSBuild

В дополнение к lib, content и tools в структуру проекта NuGet добавлена папка build. Она предназначена для размещения файлов {packageId}.targets и {packageId}.props. Кроме того, они также могут быть расположены в папках с именами целевых платформ.

При установке пакета эти файлы будут добавлены в MSBuild <Import>.

Поддержка native-проектов

Начиная с версии 2.5, NuGet получил поддержку native-проектов. С более подробной информацией об этом можно ознакомиться в статье на сайте coapp.org. Стоит отметить, что в этом случае в качестве целевой платформы указывается native, а папка lib в структуре пакета не поддерживается.

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

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

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

NuGet.exe update –self

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

Игорь 27.04.2013 7:45:30

в nuget существует команда просто переустановить всё заново? т.е. прочитать packages.config, выкачать все пакеты и перезаписать все файлы, искал такую команду, но так и не нашел

@ Игорь: Update-Package -Reinstall

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