Compartir a través de


Notas de la versión de NuGet 2.8

Notas de la versión de NuGet 2.7.2 | Notas de la versión de NuGet 2.8.1

NuGet 2.8 se publicó el 29 de enero de 2014.

Agradecimientos

  1. [Llewellyn Pritchard](https://www.codeplex.com/site/users/view/leppie) (@leppie)
    • [#3466](https://nuget.codeplex.com/workitem/3466): comprobación del identificador de los paquetes de dependencia al empaquetar paquetes.
  2. [Maarten Balliauw](https://www.codeplex.com/site/users/view/maartenba) (@maartenballiauw)
    • [#2379](https://nuget.codeplex.com/workitem/2379): eliminación del sufijo $metadata al almacenar credenciales de fuente.
  3. [Filip De Vos](https://www.codeplex.com/site/users/view/FilipDeVos) (@foxtricks)
    • [#3538](http://nuget.codeplex.com/workitem/3538): compatibilidad con la especificación del archivo del proyecto para el comando de actualización nuget.exe.
  4. [Juan Gonzalez](https://www.codeplex.com/site/users/view/jjgonzalez)
    • [#3536](http://nuget.codeplex.com/workitem/3536): tokens de reemplazo no pasados con -IncludeReferencedProjects.
  5. [David Poole](https://www.codeplex.com/site/users/view/Sarkie) (@Sarkie_Dave)
    • [#3677](http://nuget.codeplex.com/workitem/3677): se ha corregido la generación de OutOfMemoryException en nuget.push al insertar un paquete grande.
  6. [Wouter Ouwens](https://www.codeplex.com/site/users/view/Despotes)
    • [#3666](http://nuget.codeplex.com/workitem/3666): se ha corregido una ruta de acceso de destino incorrecta cuando el proyecto hace referencia a otro proyecto de la CLI o C++.
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • [#3639](https://nuget.codeplex.com/workitem/3639): permiso para que los paquetes se instalen como dependencias de desarrollo de forma predeterminada
  8. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • [#3717](https://nuget.codeplex.com/workitem/3717): eliminación de actualizaciones implícitas de la versión de revisión más reciente
  9. [Gregory Vandenbrouck](https://www.codeplex.com/site/users/view/vdbg)
    • Varias correcciones de errores y mejoras para NuGet.Server, el comando reflejado nuget.exe y otros.
    • Este trabajo se realizó durante varios meses, y Gregory colaboró con nosotros para la integración oportuna de la versión 2.8 en la principal.

Resolución de revisiones para dependencias

Al resolver dependencias de paquetes, históricamente NuGet ha implementado la estrategia de seleccionar la versión de paquete principal y secundaria más baja que satisface las dependencias del paquete. Pero a diferencia de la versión principal y secundaria, la versión de revisión siempre se ha resuelto con la versión más alta. Aunque la intención del comportamiento era la correcta, creó una falta de determinismo para instalar paquetes con dependencias. Considere el ejemplo siguiente:

PackageA@1.0.0 -[ >=1.0.0 ]-> PackageB@1.0.0

Developer1 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.0

PackageB@1.0.1 is published

Developer2 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.1

En este ejemplo, aunque Developer1 y Developer2 han instalado PackageA@1.0.0, cada uno ha terminado con una versión diferente de PackageB. En NuGet 2.8 se cambia este comportamiento predeterminado, para que el comportamiento de resolución de dependencias de las versiones de revisión sea coherente con el de las versiones principales y secundarias. En el ejemplo anterior, PackageB@1.0.0 se instalaría como resultado de la instalación de PackageA@1.0.0, independientemente de la versión de revisión más reciente.

Modificador -DependencyVersion

Aunque en NuGet 2.8 se cambia el comportamiento predeterminado para resolver dependencias, también se agrega un control más preciso sobre el proceso de resolución de dependencias mediante el modificador -DependencyVersion en la consola del administrador de paquetes. El modificador permite resolver dependencias en la versión más baja posible (comportamiento predeterminado), la versión más alta posible o la versión secundaria o de revisión más alta. Este modificador solo funciona para install-package en el comando de PowerShell.

DependencyVersion Switch

Atributo DependencyVersion

Además del modificador -DependencyVersion detallado antes, NuGet también ha permitido establecer un nuevo atributo en el archivo Nuget.Config que define cuál es el valor predeterminado, si el modificador -DependencyVersion no se especifica en una invocación de install-package. En el cuadro de diálogo Administrador de paquetes NuGet también se respetará este valor para cualquier operación de instalación de paquetes. Para establecer este valor, agregue el atributo siguiente al archivo Nuget.Config:

<config>
    <add key="dependencyversion" value="Highest" />
</config>

Vista previa de operaciones de NuGet con -whatif

Algunos paquetes NuGet pueden tener grafos de dependencia profundos y, como tal, durante una operación de instalación, desinstalación o actualización puede resultar útil ver primero lo que ocurrirá. En NuGet 2.8 se agrega el modificador estándar -whatif de PowerShell a los comandos install-package, uninstall-package y update-package para permitir visualizar todos los paquetes a los que se aplicará el comando. Por ejemplo, la ejecución de install-package Microsoft.AspNet.WebApi -whatif en una aplicación web de ASP.NET vacía produce lo siguiente.

PM> install-package Microsoft.AspNet.WebApi -whatif
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.WebHost (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Core (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Client (≥ 5.0.0)'.
Attempting to resolve dependency 'Newtonsoft.Json (≥ 4.5.11)'.
Install Newtonsoft.Json 4.5.11
Install Microsoft.AspNet.WebApi.Client 5.0.0
Install Microsoft.AspNet.WebApi.Core 5.0.0
Install Microsoft.AspNet.WebApi.WebHost 5.0.0
Install Microsoft.AspNet.WebApi 5.0.0

Cambio de un paquete a una versión anterior

No es raro instalar una versión preliminar de un paquete para investigar las nuevas características y, después, decidir revertir a la última versión estable. Antes de NuGet 2.8, se necesitaba un proceso de varios pasos para desinstalar el paquete de versión preliminar y sus dependencias y, después, instalar la versión anterior. Pero con NuGet 2.8, el paquete de actualización revertirá ahora todos los paquetes (por ejemplo, el árbol de dependencias del paquete) a la versión anterior.

Dependencias de desarrollo

Se pueden entregar muchos tipos diferentes de funcionalidades como paquetes NuGet, incluidas las herramientas que se usan para optimizar el proceso de desarrollo. Estos componentes, aunque pueden ser fundamentales para desarrollar un nuevo paquete, no deben considerarse una dependencia del nuevo paquete cuando después se publique. NuGet 2.8 permite que un paquete se identifique en el archivo .nuspec como developmentDependency. Cuando se instala, estos metadatos también se agregarán al archivo packages.config del proyecto en el que se ha instalado el paquete. Cuando posteriormente ese archivo packages.config se analiza en busca de las dependencias de NuGet durante nuget.exe pack, excluirá esas dependencias marcadas como dependencias de desarrollo.

Archivos packages.config individuales para distintas plataformas

Al desarrollar aplicaciones para varias plataformas de destino, es habitual tener archivos del proyecto diferentes para cada uno de los entornos de compilación. También es habitual consumir diferentes paquetes NuGet en diferentes archivos del proyecto, ya que los paquetes tienen distintos niveles de compatibilidad con cada plataforma. En NuGet 2.8 se proporciona compatibilidad mejorada para este escenario mediante la creación de archivos packages.config diferentes para cada archivo del proyecto específico de la plataforma.

Multiple package.config files

Reserva a la caché local

Aunque los paquetes NuGet se consumen normalmente desde una galería remota, como la galería de NuGet mediante una conexión de red, hay muchos escenarios en los que el cliente no está conectado. Sin una conexión de red, el cliente NuGet no puede instalar correctamente paquetes, incluso cuando esos paquetes ya están en el equipo del cliente en la caché local de NuGet. En NuGet 2.8 se agrega reserva automática de caché a la consola del administrador de paquetes. Por ejemplo, al desconectar el adaptador de red e instalar jQuery, la consola muestra lo siguiente:

PM> Install-Package jquery
The source at nuget.org [https://www.nuget.org/api/v2/] is unreachable. Falling back to NuGet Local Cache at C:\Users\me\AppData\Local\NuGet\Cache
Installing 'jQuery 2.0.3'.
Successfully installed 'jQuery 2.0.3'.
Adding 'jQuery 2.0.3' to WebApplication18.
Successfully added 'jQuery 2.0.3' to WebApplication18.

La característica de reserva de caché no necesita ningún argumento de comando específico. Además, la reserva de caché solo funciona actualmente en la consola del administrador de paquetes; no funciona actualmente en el cuadro de diálogo Administrador de paquetes.

Actualizaciones del cliente NuGet de WebMatrix

Junto con NuGet 2.8, la extensión NuGet para WebMatrix también se ha actualizado para incluir muchas de las características principales que se entregan con NuGet 2.5. Entre las nuevas funcionalidades se incluyen "Actualizar todo", "Versión mínima de NuGet" y la posibilidad de sobrescribir archivos de contenido.

Para actualizar la extensión Administrador de paquetes NuGet en WebMatrix 3:

  1. Abra WebMatrix 3
  2. En la cinta, haga clic en el icono Extensiones
  3. Seleccione la pestaña Actualizaciones
  4. Haga clic para actualizar el Administrador de paquetes NuGet a la versión 2.5.0
  5. Cierre y reinicie WebMatrix 3

Esta es la primera versión del equipo de NuGet de la extensión Administrador de paquetes NuGet para WebMatrix. Microsoft ha contribuido recientemente al código en el proyecto NuGet de código abierto. Anteriormente, la integración de NuGet se incluía en WebMatrix y no se podía actualizar fuera de banda desde WebMatrix. Ahora tenemos la capacidad de actualizarla aún más junto con el resto de las herramientas de cliente de NuGet.

Correcciones de errores

Una de las principales correcciones de errores realizadas ha sido la mejora del rendimiento en el comando update-package -reinstall.

Además de estas características y la corrección de rendimiento mencionada antes, en esta versión de NuGet también se incluyen muchas otras correcciones de errores. En la versión se han solucionado un total de 181 problemas. Para obtener una lista completa de los elementos de trabajo corregidos en NuGet 2.8, vea .[NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.8&status=all)