martes, 27 de noviembre de 2012
Aunque a muchos pueda parecer simple, hay gran cantidad de desarrolladores que para actualizar los paquetes Nuget de un proyecto acuden a la herramienta de gestión incluida en el IDE y van actualizando uno por uno los componentes instalados.
Pues bien, resulta que desde hace algún tiempo, Nuget soporta la actualización automática de todos los paquetes de una solución. Para ello, basta con acudir a la consola de administración de paquetes (Tools > Library Package Manager > Package Manager Console) e introducir el comando
Por ejemplo, sobre una aplicación MVC 4 recién creada, el resultado es el siguiente:
De esta forma, acabamos de ahorrarnos un buen rato buscando e instalando actualizaciones manualmente sobre el proyecto :-)
La instrucción anterior realiza la actualización sobre una solución completa, pero podemos hilar un poco más fino. El siguiente comando restringe la instalación de actualizaciones al proyecto cuyo nombre especificamos como parámetro:
Por ello, podemos indicar que las actualizaciones se realicen en “modo seguro” añadiendo el switch
Por ejemplo, si en un proyecto usamos un componente versión 1.0.1 y en el feed de Nuget existen las versiones 1.0.4, 1.1, y 2.0 de este componente, tras llamar a
En definitiva, una característica de lo más útil y que espero que os ahorre bastante tiempo a los que aún no la conocíais.
Publicado en: Variable not found.
Pues bien, resulta que desde hace algún tiempo, Nuget soporta la actualización automática de todos los paquetes de una solución. Para ello, basta con acudir a la consola de administración de paquetes (Tools > Library Package Manager > Package Manager Console) e introducir el comando
update-package
:Por ejemplo, sobre una aplicación MVC 4 recién creada, el resultado es el siguiente:
PM> update-package Updating 'Modernizr' from version '2.5.3' to '2.6.2' in project 'MyMvcProject'. Successfully removed 'Modernizr 2.5.3' from MyMvcProject. Successfully installed 'Modernizr 2.6.2'. Successfully added 'Modernizr 2.6.2' to MyMvcProject. Successfully uninstalled 'Modernizr 2.5.3'. No updates available for 'Microsoft.jQuery.Unobtrusive.Validation' in project 'MyMvcProject'. No updates available for 'Microsoft.jQuery.Unobtrusive.Ajax' in project 'MyMvcProject'. No updates available for 'Microsoft.AspNet.WebPages.OAuth' in project 'MyMvcProject'. No updates available for 'Microsoft.AspNet.WebPages.WebData' in project 'MyMvcProject'. No updates available for 'Microsoft.AspNet.WebPages.Data' in project 'MyMvcProject'. No updates available for 'Microsoft.AspNet.WebApi' in project 'MyMvcProject'. No updates available for 'Microsoft.AspNet.WebApi.WebHost' in project 'MyMvcProject'. No updates available for 'Microsoft.AspNet.WebApi.Core' in project 'MyMvcProject'. No updates available for 'Microsoft.AspNet.WebApi.Client' in project 'MyMvcProject'. Updating 'Newtonsoft.Json' from version '4.5.6' to '4.5.11' in project 'MyMvcProject'. Successfully removed 'Newtonsoft.Json 4.5.6' from MyMvcProject. Successfully installed 'Newtonsoft.Json 4.5.11'. Successfully added 'Newtonsoft.Json 4.5.11' to MyMvcProject. Successfully uninstalled 'Newtonsoft.Json 4.5.6'. No updates available for 'Microsoft.Net.Http' in project 'MyMvcProject'. No updates available for 'Microsoft.AspNet.Web.Optimization' in project 'MyMvcProject'. Updating 'WebGrease' from version '1.1.0' to '1.3.0' in project 'MyMvcProject'. Successfully removed 'WebGrease 1.1.0' from MyMvcProject. You are downloading WebGrease from webgrease@microsoft.com, the license agreement to which is available at http://www.microsoft.com/web/webpi/eula/msn_webgrease_eula.htm. Check the package for additional dependencies, which may come with their own license agreement(s). Your use of the package and dependencies constitutes your acceptance of their license agreements. If you do not accept the license agreement(s), then delete the relevant components from your device. Successfully installed 'WebGrease 1.3.0'. Successfully added 'WebGrease 1.3.0' to MyMvcProject. Successfully uninstalled 'WebGrease 1.1.0'. No updates available for 'Microsoft.AspNet.Mvc' in project 'MyMvcProject'. No updates available for 'Microsoft.AspNet.WebPages' in project 'MyMvcProject'. Updating 'Microsoft.AspNet.Razor' from version '2.0.20710.0' to '2.0.20715.0' in project 'MyMvcProject'. Successfully removed 'Microsoft.AspNet.Razor 2.0.20710.0' from MyMvcProject. You are downloading Microsoft.AspNet.Razor from Microsoft, the license agreement to which is available at http://www.microsoft.com/web/webpi/eula/WebPages_2_eula_ENU.htm. Check the package for additional dependencies, which may come with their own license agreement(s). Your use of the package and dependencies constitutes your acceptance of their license agreements. If you do not accept the license agreement(s), then delete the relevant components from your device. Successfully installed 'Microsoft.AspNet.Razor 2.0.20715.0'. Successfully added 'Microsoft.AspNet.Razor 2.0.20715.0' to MyMvcProject. Successfully uninstalled 'Microsoft.AspNet.Razor 2.0.20710.0'. No updates available for 'Microsoft.Web.Infrastructure' in project 'MyMvcProject'. Updating 'knockoutjs' from version '2.1.0' to '2.2.0' in project 'MyMvcProject'. Successfully removed 'knockoutjs 2.1.0' from MyMvcProject. Successfully installed 'knockoutjs 2.2.0'. Successfully added 'knockoutjs 2.2.0' to MyMvcProject. Successfully uninstalled 'knockoutjs 2.1.0'. Updating 'jQuery.Validation' from version '1.9.0.1' to '1.10.0' in project 'MyMvcProject'. Successfully removed 'jQuery.Validation 1.9.0.1' from MyMvcProject. Successfully installed 'jQuery.Validation 1.10.0'. Successfully added 'jQuery.Validation 1.10.0' to MyMvcProject. Successfully uninstalled 'jQuery.Validation 1.9.0.1'. Updating 'jQuery.UI.Combined' from version '1.8.20.1' to '1.9.0' in project 'MyMvcProject'. Successfully removed 'jQuery.UI.Combined 1.8.20.1' from MyMvcProject. Successfully installed 'jQuery.UI.Combined 1.9.0'. Successfully added 'jQuery.UI.Combined 1.9.0' to MyMvcProject. Successfully uninstalled 'jQuery.UI.Combined 1.8.20.1'. Updating 'jQuery' from version '1.7.1.1' to '1.8.2' in project 'MyMvcProject'. Successfully removed 'jQuery 1.7.1.1' from MyMvcProject. Successfully installed 'jQuery 1.8.2'. Successfully added 'jQuery 1.8.2' to MyMvcProject. Successfully uninstalled 'jQuery 1.7.1.1'. No updates available for 'EntityFramework' in project 'MyMvcProject'. Updating 'DotNetOpenAuth.AspNet' from version '4.0.3.12153' to '4.1.3.12303' in project 'MyMvcProject'. Successfully removed 'DotNetOpenAuth.AspNet 4.0.3.12153' from MyMvcProject. Successfully removed 'DotNetOpenAuth.OAuth.Consumer 4.0.3.12153' from MyMvcProject. Successfully removed 'DotNetOpenAuth.OAuth.Core 4.0.3.12153' from MyMvcProject. Successfully removed 'DotNetOpenAuth.OpenId.RelyingParty 4.0.3.12153' from MyMvcProject. Successfully removed 'DotNetOpenAuth.OpenId.Core 4.0.3.12153' from MyMvcProject. Successfully removed 'DotNetOpenAuth.Core 4.0.3.12153' from MyMvcProject. Successfully installed 'DotNetOpenAuth.Core 4.1.3.12303'. Successfully added 'DotNetOpenAuth.Core 4.1.3.12303' to MyMvcProject. Successfully installed 'DotNetOpenAuth.OpenId.Core 4.1.3.12303'. Successfully added 'DotNetOpenAuth.OpenId.Core 4.1.3.12303' to MyMvcProject. Successfully installed 'DotNetOpenAuth.OpenId.RelyingParty 4.1.3.12303'. Successfully added 'DotNetOpenAuth.OpenId.RelyingParty 4.1.3.12303' to MyMvcProject. Successfully installed 'DotNetOpenAuth.OAuth.Core 4.1.3.12303'. Successfully added 'DotNetOpenAuth.OAuth.Core 4.1.3.12303' to MyMvcProject. Successfully installed 'DotNetOpenAuth.OAuth.Consumer 4.1.3.12303'. Successfully added 'DotNetOpenAuth.OAuth.Consumer 4.1.3.12303' to MyMvcProject. Successfully installed 'DotNetOpenAuth.AspNet 4.1.3.12303'. Successfully added 'DotNetOpenAuth.AspNet 4.1.3.12303' to MyMvcProject. Successfully uninstalled 'DotNetOpenAuth.AspNet 4.0.3.12153'. Successfully uninstalled 'DotNetOpenAuth.OAuth.Consumer 4.0.3.12153'. Successfully uninstalled 'DotNetOpenAuth.OAuth.Core 4.0.3.12153'. Successfully uninstalled 'DotNetOpenAuth.OpenId.RelyingParty 4.0.3.12153'. Successfully uninstalled 'DotNetOpenAuth.OpenId.Core 4.0.3.12153'. Successfully uninstalled 'DotNetOpenAuth.Core 4.0.3.12153'. No updates available for 'DotNetOpenAuth.OAuth.Consumer' in project 'MyMvcProject'. No updates available for 'DotNetOpenAuth.OAuth.Core' in project 'MyMvcProject'. No updates available for 'DotNetOpenAuth.OpenId.RelyingParty' in project 'MyMvcProject'. No updates available for 'DotNetOpenAuth.OpenId.Core' in project 'MyMvcProject'. No updates available for 'DotNetOpenAuth.Core' in project 'MyMvcProject'. PM>
De esta forma, acabamos de ahorrarnos un buen rato buscando e instalando actualizaciones manualmente sobre el proyecto :-)
La instrucción anterior realiza la actualización sobre una solución completa, pero podemos hilar un poco más fino. El siguiente comando restringe la instalación de actualizaciones al proyecto cuyo nombre especificamos como parámetro:
PM> update-package -ProjectName ProjectToUpdateTambién podemos actuar de forma algo más prudente. Por defecto, Nuget instalará las versiones más recientes de todos los paquetes usados en el proyecto o solución, pero a veces, esto podría introducir errores en la aplicación, sobre todo si el salto de versiones es demasiado grande.
Por ello, podemos indicar que las actualizaciones se realicen en “modo seguro” añadiendo el switch
-safe
al comando, como se observa en el siguiente ejemplo:PM> update-package -ProjectName AnotherProject –SafeDe esta forma conseguiremos que las actualizaciones no se realicen a la última versión disponible, sino a la última build dentro de la misma versión usada del componente. Es decir, una biblioteca que use un código de versionado del tipo
major.minor.build.revision
, sólo será actualizado hasta la versión major.minor.maxbuild
de la misma.Por ejemplo, si en un proyecto usamos un componente versión 1.0.1 y en el feed de Nuget existen las versiones 1.0.4, 1.1, y 2.0 de este componente, tras llamar a
update-package
a secas, este componente será actualizado a la versión 2.0. En cambio, si usamos –safe
, se actualizará a la 1.0.4.En definitiva, una característica de lo más útil y que espero que os ahorre bastante tiempo a los que aún no la conocíais.
Publicado en: Variable not found.
2 Comentarios:
No puedo creer que esto existiera y yo estuviera todavia haciéndolo a mano :'( ... no se puede estar en todo...
Muchas gracias por darle difusión al truco, esto nos puede ahorrar mucho tiempo y problemas.
Y de paso aprovecho para darte la enhorabuena por el blog, estoy suscrito desde hace mucho tiempo.
Un saludo.
Pues ya ves, amigo, esto es un no parar :-) Me alegro de que te sea útil.
Y muchas gracias por tu comentario.
Un saludo!
Enviar un nuevo comentario