Заметки о выпуске NuGet 2.0

Заметки | о выпуске NuGet 1.8 NuGet 2.1

NuGet 2.0 выпущен 19 июня 2012 года.

Известная проблема с установкой

Если вы используете VS 2010 с пакетом обновления 1 (SP1), при попытке обновить NuGet при установке более старой версии может возникнуть ошибка.

Обходной путь — просто удалить NuGet, а затем установить его из коллекции расширений VS. Дополнительные сведения см https://support.microsoft.com/kb/2581019 . в исправлении VS.

Примечание. Если Visual Studio не позволит удалить расширение (кнопка "Удалить" отключена), скорее всего, потребуется перезапустить Visual Studio с помощью команды "Запуск от имени Администратор istrator".

Как описано в этой записи о согласии на восстановление пакета, NuGet 2.0 теперь требует предоставления согласия на включение восстановления пакетов для перехода в интернет и скачивания пакетов. Убедитесь, что вы предоставили согласие с помощью диалогового окна конфигурации диспетчера пакетов или переменной среды EnableNuGetPackageRestore.

Группировать зависимости по целевым платформам

Начиная с версии 2.0 зависимости пакетов могут отличаться в зависимости от профиля платформы целевого проекта. Это достигается с помощью обновленной .nuspec схемы. Теперь <dependencies> элемент может содержать набор <group> элементов. Каждая группа содержит ноль или несколько <dependency> элементов и targetFramework атрибут. Все зависимости внутри группы устанавливаются вместе, если целевая платформа совместима с профилем целевой платформы проекта. Например:

<dependencies>
    <group>
        <dependency id="RouteMagic" version="1.1.0" />
    </group>

    <group targetFramework="net40">
        <dependency id="jQuery" />
        <dependency id="WebActivator" />
    </group>

    <group targetFramework="sl30">
    </group>
</dependencies>

Обратите внимание, что группа может содержать нулевые зависимости. В приведенном выше примере, если пакет установлен в проект, предназначенный для Silverlight 3.0 или более поздней версии, никакие зависимости не будут установлены. Если пакет установлен в проект, предназначенный для .NET 4.0 или более поздней версии, будут установлены две зависимости jQuery и WebActivator. Если пакет установлен в проект, предназначенный для ранней версии этих 2 платформ или любой другой платформы, будет установлен RouteMagic 1.1.0. Между группами нет наследования. Если целевая платформа проекта соответствует targetFramework атрибуту группы, будут установлены только зависимости в этой группе.

Пакет может указать зависимости пакета в любом из двух форматов: старый формат неструктурированного списка <dependency> элементов или групп. <group> Если используется формат, пакет нельзя установить в версии NuGet до версии 2.0.

Обратите внимание, что сочетание двух форматов не допускается. Например, следующий фрагмент кода недопустим и будет отклонен NuGet.

<dependencies>
    <dependency id="jQuery" />
    <dependency id="WebActivator" />

    <group>
        <dependency id="RouteMagic" version="1.1.0" />
    </group>
</dependencies>

Группирование файлов содержимого и скриптов PowerShell по целевой платформе

Помимо ссылок на сборки, файлы содержимого и скрипты PowerShell также можно сгруппировать по целевой платформе. Та же структура папок, найденная в lib папке для указания целевой платформы, теперь может применяться так же, как и к contenttools папкам. Например:

\content
    \net11
        \MyContent.txt
    \net20
        \MyContent20.txt
    \net40
    \sl40
        \MySilverlightContent.html

\tools
    \init.ps1
    \net40
        \install.ps1
        \uninstall.ps1
    \sl40
        \install.ps1
        \uninstall.ps1

Примечание. Так как init.ps1 выполняется на уровне решения и не зависит от отдельного проекта, он должен быть помещен непосредственно в папку tools . Если он помещается в папку для конкретной платформы, он будет игнорироваться.

Кроме того, новая функция в NuGet 2.0 заключается в том, что папка платформы может быть пуста, в этом случае NuGet не будет добавлять ссылки на сборки, добавлять файлы содержимого или запускать скрипты PowerShell для конкретной версии платформы. В приведенном выше примере папка content\net40 пуста.

Улучшенная производительность завершения вкладки

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

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

NuGet 2.0 включает множество исправлений ошибок с акцентом на согласие на восстановление пакета и производительность. Полный список рабочих элементов, исправленных в NuGet 2.0, см. в разделе [NuGet Issue Tracker for this release](http://nuget.codeplex.com/workitem/list/advanced?keyword=&status=Closed&type=All&priority=All&release=NuGet%202.0&assignedTo=All&component=All&sortField=Votes&sortDirection=Descending&page=0).