Прочитать на английском

Поделиться через


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

Заметки о выпуске NuGet 2.5 для NuGet 2.6.1 для примечания | о выпуске WebMatrix

NuGet 2.6 выпущен 26 июня 2013 года.

Важные функции в выпуске

Поддержка Visual Studio 2013

NuGet 2.6 — это первый выпуск, предоставляющий поддержку Visual Studio 2013. И, как и в Visual Studio 2012, расширение NuGet диспетчер пакетов включается в каждый выпуск Visual Studio.

Чтобы обеспечить оптимальную поддержку Visual Studio 2013 при поддержке Visual Studio 2010 и Visual Studio 2012 и поддержания размеров расширений как можно меньше, мы создадим отдельное расширение для Visual Studio 2013, пока исходное расширение продолжает нацелено на Visual Studio 2010 и 2012.

Начиная с NuGet 2.6, мы опубликуем два расширения, как показано ниже:

  1. NuGet диспетчер пакетов (относится к Visual Studio 2010 и 2012)
  2. NuGet диспетчер пакетов для Visual Studio 2013

При этом разделите кнопку nuget.org домашней страницы "Установить NuGet" на странице установки NuGet, где можно найти дополнительные сведения об установке различных клиентов NuGet.

Поддержка преобразования XDT Web.config

Одним из самых высоко запрошенных функций для клиента NuGet является поддержка более мощных преобразований XML с помощью подсистемы преобразования XDT, которая используется в преобразованиях конфигурации сборки Visual Studio.

В апреле 2013 года мы сделали два больших объявления о поддержке NuGet для XDT. Первым было то, что сама библиотека XDT была выпущена в виде пакета NuGet и [open sourced on CodePlex](http://xdt.codeplex.com/). На этом шаге модуль XDT можно использовать свободно с помощью другого программного обеспечения с открытым кодом, включая клиент NuGet. Второе объявление было планом поддержки использования обработчика XDT для преобразований в клиенте NuGet. NuGet 2.6 включает эту интеграцию.

Как это работает

Чтобы воспользоваться поддержкой XDT NuGet, механики выглядят примерно так же, как и в текущей функции преобразования конфигурации. Файлы преобразования добавляются в папку содержимого пакета. Однако при преобразовании конфигурации используется один файл для установки и удаления, преобразования XDT позволяют точно контролировать оба процесса с помощью следующих файлов:

  • Web.config.install.xdt
  • Web.config.uninstall.xdt

Кроме того, NuGet использует суффикс файла для определения механизма, выполняемого для преобразований, поэтому пакеты, использующие существующий web.config.transforms, будут продолжать работать. Преобразования XDT также могут применяться к любому XML-файлу (а не только к web.config), поэтому его можно использовать для других приложений в проекте.

Что можно сделать с помощью XDT

Одним из величайших преимуществ XDT является его простой, но мощный синтаксис для управления структурой XML-DOM. Вместо того чтобы просто переложить одну фиксированную структуру документа на другую структуру, XDT предоставляет элементы управления для сопоставления элементов различными способами, от простого имени атрибута, соответствующего полной поддержке XPath. После обнаружения соответствующего элемента или набора элементов XDT предоставляет широкий набор функций для управления элементами, то есть при добавлении, обновлении или удалении атрибутов, размещении нового элемента в определенном расположении или замене или удалении всего элемента и его дочерних элементов.

Конфигурация на уровне компьютера

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

NuGet 2.6 расширяет логику настройки NuGet путем поиска иерархии папок в пути %ProgramData%/NuGet/Config. Установщики продуктов могут добавлять пользовательские файлы конфигурации NuGet в этой папке, чтобы зарегистрировать пользовательский источник пакета для своих продуктов. Кроме того, структура папок поддерживает семантику для продукта, версии и даже SKU интегрированной среды разработки. Параметры из этих каталогов применяются в следующем порядке с стратегией приоритета last in wins.

  1. %ProgramData%\NuGet\Config*.config
  2. %ProgramData%\NuGet\Config{IDE}*.config
  3. %ProgramData%\NuGet\Config{IDE}{Version}*.config
  4. %ProgramData%\NuGet\Config{IDE}{Version}{SKU}*.config

В этом списке заполнитель {IDE} относится к интегрированной среде разработки, в которой выполняется NuGet, поэтому в случае Visual Studio это будет "VisualStudio". Заполнители {Version} и {SKU} предоставляются интегрированной среды разработки (например, "11.0" и "WDExpress", "VWDExpress" и "Pro", соответственно). Затем папка может содержать множество разных файлов *.config. Поэтому компания компонентов ACME может в составе установщика продукта добавить пользовательский источник пакета, который будет отображаться только в профессиональных и конечных версиях Visual Studio 2012, создав следующий путь к файлу:

%ProgramData%\NuGet\Config\VisualStudio\11.0\Pro\acme.config

Хотя структура папок упрощает программы, такие как установщики программного обеспечения, чтобы добавить источники пакетов на уровне компьютера в конфигурацию NuGet, диалоговое окно конфигурации NuGet также было обновлено, чтобы разрешить регистрацию источников пакетов в качестве конкретных пользователей (например, зарегистрированных в %AppData%/NuGet/NuGet.Config) или на уровне компьютера.

Эта функция используется Visual Studio 2013, где установлен файл:

%ProgramData%\NuGet\Config\VisualStudio\12.0\Microsoft.VisualStudio.config

В этом файле настроен новый источник пакета с именем "платформа .NET Framework пакеты".

NuGet Config File machine wide settings

Поскольку количество пакетов, обслуживаемых коллекцией NuGet, продолжает расти в экспоненциальном темпе, улучшение поиска остается в верхней части списка приоритетов NuGet. Одним из запланированных функций NuGet является контекстный поиск, то есть NuGet будет использовать сведения о версии и SKU Visual Studio, а также тип проекта, который вы создаете в качестве критериев для определения релевантности потенциальных результатов поиска.

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

Отслеживание прямых установок и установок зависимостей

Авторы пакетов полагаются на статистику пакетов, предоставляемую в коллекции NuGet. Одна из важных отсутствующих точек данных, которую авторы попросили, — это различие между прямыми установками пакетов и установками зависимостей. До сих пор клиент NuGet не отправлял никаких контекстов вокруг операции установки для того, установлен ли разработчик непосредственно пакет или если он был установлен для удовлетворения зависимости. Начиная с NuGet 2.6, эти данные теперь будут отправлены для операции установки. Статистика пакетов в коллекции NuGet предоставляет эти данные в виде отдельных операций установки с суффиксом -Dependency.

  • Установка
  • Install-Dependency
  • Обновить
  • Update-Dependency
  • Переустановка
  • Переустановка зависимостей

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

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

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