Notas de la versión de NuGet 1.4

Notas de la versión de NuGet 1.3 | Notas de la versión de NuGet 1.5

NuGet 1.4 se publicó el 17 de junio de 2011.

Características

Mejoras de Update-Package

En NuGet 1.4 se presentan muchas mejoras para el comando Update-Package, lo que facilita el mantenimiento de paquetes en la misma versión en varios proyectos de una solución. Por ejemplo, al actualizar un paquete a la versión más reciente, es muy habitual que todos los proyectos con ese paquete instalado se actualicen a la misma versión.

El comando Update-Package ahora facilita lo siguiente:

Actualizar todos los paquetes de un solo proyecto

Update-Package -Project MvcApplication1

Actualizar un paquete en todos los proyectos

Update-Package PackageId

Actualizar todos los paquetes de todos los proyectos

Update-Package

Realizar una actualización "segura" en todos los paquetes

La marca -Safe restringe las actualizaciones solo a versiones con el mismo componente de versión principal y secundaria. Por ejemplo, si está instalada la versión 1.0.0 de un paquete y las versiones 1.0.1, 1.0.2 y 1.1 están disponibles en la fuente, la marca -Safe actualiza el paquete a la versión 1.0.2. La actualización sin la marca -Safe actualizaría el paquete a la versión más reciente, 1.1.

Update-Package -Safe

Administración de paquetes en el nivel de la solución

Antes de NuGet 1.4, la instalación de un paquete en varios proyectos era complicada mediante el cuadro de diálogo. Era necesario abrir el cuadro de diálogo una vez por cada proyecto.

En NuGet 1.4 se agrega compatibilidad para instalar, desinstalar o actualizar paquetes en varios proyectos al mismo tiempo. Para abrirlo, solo tiene que hacer clic con el botón derecho en la solución y seleccionar la opción de menú Administrar paquetes NuGet.

Solution Level Manage NuGet Packages dialog

Observe que, en la barra de título del cuadro de diálogo, se muestra el nombre de la solución, no el nombre de un proyecto. Las operaciones de paquete ahora proporcionan una lista de casillas con la lista de proyectos a los que se debe aplicar la operación.

Manage NuGet Packages Project Selection

Para más información, vea el tema sobre administración de paquetes para la solución.

Restricción de actualizaciones a versiones permitidas

De forma predeterminada, al ejecutar el comando Update-Package en un paquete (o actualizarlo mediante el cuadro de diálogo), se actualizará a la versión más reciente de la fuente. Con la nueva compatibilidad para actualizar todos los paquetes, puede haber casos en los que quiera restringir un paquete a un intervalo de versiones específico. Por ejemplo, es posible que sepa con antelación que la aplicación solo funcionará con la versión 2.* de un paquete, pero no con la versión 3.0 y posteriores. Para evitar la actualización accidental del paquete a la versión 3, en NuGet 1.4 se agrega compatibilidad para restringir el intervalo de versiones a las que se pueden actualizar los paquetes mediante la edición manual del archivo packages.config con el nuevo atributo allowedVersions.

En el ejemplo siguiente se muestra cómo restringir el paquete SomePackage al intervalo de versiones 2.0 - 3.0 (exclusive). El atributo allowedVersions acepta valores con el formato de intervalo de versiones.

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="SomePackage" version="2.1.0" allowedVersions="[2.0, 3.0)" />
</packages>

Tenga en cuenta que, en la versión 1.4, la restricción de un paquete a un intervalo de versiones específico se debe editar manualmente. En NuGet 1.5 está previsto agregar compatibilidad para colocar este intervalo mediante el comando Install-Package.

Visualizador de paquetes

El nuevo visualizador de paquetes, que se inicia desde de la opción de menú Herramientas ->Administrador de paquetes de biblioteca ->Visualizador de paquetes, le permite visualizar fácilmente todos los proyectos y sus dependencias de paquete dentro de una solución.

Nota importante: Esta característica aprovecha la compatibilidad con DGML en Visual Studio. La creación de la visualización solo se admite en Visual Studio Ultimate. La visualización de un diagrama DGML solo se admite en Visual Studio Premium o una versión posterior.

Package Visualizer

Comprobación de actualizaciones automáticas para el cuadro de diálogo NuGet

Algunas versiones de NuGet presentan nuevas características expresadas mediante el archivo .nuspec que las versiones anteriores del cuadro de diálogo NuGet no comprenden. Un ejemplo es la introducción en NuGet 1.4 de la especificación de ensamblados de marco. Por este motivo, es importante usar la versión más reciente de NuGet para asegurarse de que puede usar paquetes que aprovechen las características más recientes. Para que las actualizaciones de NuGet sean más visibles, el cuadro de diálogo NuGet contiene lógica para resaltar cuándo hay disponible una versión más reciente.

Nota: La comprobación solo se realiza si la pestaña En línea se ha seleccionado en la sesión actual.

Manage NuGet Packages dialog with new version available

Para desactivar la comprobación automática de actualizaciones, vaya al cuadro de diálogo Configuración de NuGet y desactive Buscar actualizaciones automáticamente.

NuGet Settings

Esta característica se agregó realmente en NuGet 1.3, pero no sería visible, por supuesto, hasta que una actualización a 1.3, como la de NuGet 1.4, estuvo disponible.

Mejoras del cuadro de diálogo de Administrador de paquetes

  • Nombres de menú mejorados: se ha cambiado el nombre de las opciones de menú para abrir el cuadro de diálogo para que sean más claras. Ahora la opción de menú es Administrar paquetes NuGet.
  • En el panel Detalles se muestra la fecha de actualización más reciente: en el cuadro de diálogo NuGet se muestra la fecha de la actualización más reciente en el panel de detalles de un paquete cuando se selecciona la pestaña En línea o Novedades.
  • Lista de etiquetas mostradas: en el cuadro de diálogo Nuget se muestran etiquetas.

Mejoras de PowerShell

  • Scripts de PowerShell firmados: NuGet incluye scripts de PowerShell firmados que permiten el uso en entornos más restrictivos.
  • Compatibilidad con avisos: ahora la consola del Administrador de paquetes admite avisos mediante los comandos $host.ui.Prompt y $host.ui.PromptForChoice.
  • Nombres de origen del paquete: se admite proporcionar el nombre de un origen de paquete al especificar un origen de paquete con la marca -Source.

Mejoras en la línea de comandos de nuget.exe

  • Comandos personalizados de NuGet: nuget.exe es extensible por medio de comandos personalizados mediante MEF.
  • Flujo de trabajo más sencillo para crear paquetes de símbolos: la marca -Symbols se puede aplicar a una estructura de carpetas basada en convención normal para crear un paquete de símbolos incluyendo solo el código fuente y los archivos .pdb dentro de la carpeta.
  • Especificación de varios orígenes: el comando NuGet install admite la especificación de varios orígenes delimitados mediante punto y coma, o bien si se especifica -Source varias veces.
  • Compatibilidad con la autenticación de proxy: NuGet 1.4 agrega compatibilidad para solicitar credenciales de usuario cuando se usa NuGet detrás de un proxy que necesita autenticación.
  • Cambio importante en la actualización de nuget.exe: ahora la marca -Self es necesaria para que nuget.exe se actualice de forma automática. nuget.exe Update ahora toma una ruta de acceso al archivo packages.config e intentará actualizar los paquetes. Tenga en cuenta que esta actualización está limitada con respecto a lo que no hará: ** Actualizar, agregar, quitar contenido en el archivo del proyecto. ** Ejecutar scripts de PowerShell dentro del paquete.

Compatibilidad con el servidor NuGet para insertar paquetes mediante nuget.exe

NuGet incluye una manera sencilla de hospedar un repositorio NuGet basado en web ligero mediante el paquete NuGet NuGet.Server. Con NuGet 1.4, el servidor ligero admite la inserción y eliminación de paquetes mediante nuget.exe. La versión más reciente de NuGet.Server agrega una nueva instancia de appSetting, denominada apiKey. Si la clave se omite o se deja en blanco, la inserción de paquetes en la fuente se deshabilita. Al establecer apiKey en un valor (idealmente una contraseña segura) se pueden insertar paquetes mediante nuget.exe.

<appSettings>
    <!-- Set the value here to allow people to push/delete packages from the server.
            NOTE: This is a shared key (password) for all users. -->
    <add key="apiKey" value="" />
</appSettings>

Compatibilidad con Windows Phone Tools Mango Edition

NuGet ahora es compatible con la versión candidata para lanzamiento de Windows Phone Tools para Mango. Actualmente, Windows Phone Tools no tiene compatibilidad con el Administrador de extensiones de Visual Studio, de forma que, a fin de instalar NuGet para Windows Phone Tools, es posible que tenga que descargar y ejecutar VSIX manualmente.

A fin de desinstalar NuGet para Windows Phone Tools, ejecute el comando siguiente.

vsixinstaller.exe /uninstall:NuPackToolsVsix.Microsoft.67e54e40-0ae3-42c5-a949-fddf5739e7a5

Correcciones de errores

En NuGet 1.4 se han corregido un total de 88 elementos de trabajo. 71 de ellos se marcaron como errores.

Para obtener una lista completa de los elementos de trabajo corregidos en NuGet 1.4, vea [NuGet Issue Tracker for this release](http://nuget.codeplex.com/workitem/list/advanced?keyword=&status=All&type=All&priority=All&release=NuGet%201.4&assignedTo=All&component=All&sortField=LastUpdatedDate&sortDirection=Descending&page=0).

Correcciones de errores que conviene tener en cuenta:

  • [Issue 603](http://nuget.codeplex.com/workitem/603): las dependencias de paquetes en distintos repositorios se resuelven correctamente al especificar un origen de paquete específico.
  • [Issue 1036](http://nuget.codeplex.com/workitem/1036): la adición de NuGet Pack SomeProject.csproj al evento posterior a la compilación ya no provoca un bucle infinito.
  • [Issue 961](http://nuget.codeplex.com/workitem/961): la marca -Source admite rutas de acceso relativas.

Actualización de NuGet 1.4

Poco después del lanzamiento de NuGet 1.4, encontramos un par de problemas que era importante corregir. El número de versión específico de esta actualización de 1.4 es 1.4.20615.9020.

Correcciones de errores

  • [Issue 1220](http://nuget.codeplex.com/workitem/1220): Update-Package no se ejecuta install.ps1/uninstall.ps1 en todos los proyectos cuando hay más de un proyecto
  • [Issue 1156](http://nuget.codeplex.com/workitem/1156): la consola del Administrador de paquetes se bloqueaba en W2K3/XP (cuando PowerShell 2 no está instalado)