2012-04-11 20 views
83

Mi equipo ha estado utilizando la opción Habilitar restauración de paquete desde Nuget 1.5 para mantener los paquetes fuera de nuestro control de origen. Cuando se lanzó Nuget 1.6 notamos un problema en el que no estaba tirando de los paquetes, y lo rastreamos hasta Nuget.exe en la carpeta .nuget necesaria para actualizar a 1.6 para que coincida con el Administrador de paquetes.¿Hay alguna forma de actualizar automáticamente nuget.exe en la carpeta .nuget al usar la restauración de paquetes?

¿Cuál es la mejor manera de actualizar una solución una vez que se ha detectado Nuget? No veo una manera fácil desde el estudio de decir qué versión de nuget está en la carpeta de la solución. Hasta ahora volamos la carpeta .nuget y volvemos a ejecutar el comando Enable Package Restore.

Respuesta

128

Yo sugeriría actualización .nuget \ nuget.exe con este comando desde la línea de comandos:

nuget.exe update -self 

[EDIT]: Cerrar VS Solución primero. Si hay una actualización y se abre la solución, nuget.exe se eliminará de la solución.

Usted podría actualizar automáticamente nuget.exe en restauración modificando el .nuget \ nuget.targets para agregar el comando anterior. Me gustaría ver el comando de restauración allí como un ejemplo. Pero no estoy seguro si vale la pena, las actualizaciones de nuget.exe no son tan comunes, y la compatibilidad con versiones anteriores debería romperse muy raramente.

+0

yo probamos este en uno de mis proyectos. Se actualizó NuGet.exe pero parecía haberlo eliminado de mi solución. Sé que puedo volver a agregarlo, pero me pareció extraño. – Rick

+0

Ah, sí, intenté una actualización real esta vez y nuget.exe también se eliminó de la solución VS para mí. (No lo recibí anteriormente, ya que nuget.exe estaba actualizado). Sucede porque durante la actualización, el nuget.exe actual se mueve a nuget.exe.old primero, por lo que la referencia del archivo está rota. Dudo que esto se solucione, ejecutaría el comando con la solución cerrada. –

+0

Ok, sí, gracias por la ayuda. – Rick

31

He encontrado la mejor manera de manejar esto es simplemente eliminando la carpeta .nuget y volviendo a habilitar la restauración del paquete de toda la solución. Como se dijo anteriormente, podría agregar un comando de auto actualización a su compilación, pero eso no actualizará los objetivos o archivos de configuración si hay cambios entre versiones (o elimina la referencia de su solución). Tal vez no sea tan importante, pero esta es la forma segura de asegurarse de tener los últimos archivos de configuración y exe. Y al final del día, la actualización es solo un problema si necesita acceder a un nuevo comando o si finalmente hay un cambio importante en un nuevo lanzamiento.

+3

+1 - He encontrado que esta es la mejor manera para obtener actualizaciones de 'NuGet.exe' * y * el archivo' NuGet.targets' (que también es importante). Solo asegúrese de guardar las personalizaciones que haya realizado en el archivo 'NuGet.targets' (por ejemplo, PackageSources personalizado) para que pueda volver a aplicarlas al nuevo archivo. –

+0

genial que funcionó para mí como encanto !! gracias por la información – Gayan

-1

See David Ebbo's post at his blog

Básicamente, todo lo que necesita hacer es crear un archivo de NuGet.Config junto a su archivo .sln, que contiene:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageSources> 
    <clear/> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    <add key="aspnetwebstacknightlyrelease" value="https://www.myget.org/f/aspnetwebstacknightlyrelease/" /> 
    </packageSources> 
</configuration> 
+0

La pregunta se pregunta cómo actualizar automáticamente nuget.exe a la última versión cuando se utiliza la restauración de paquete. La publicación del blog de David Ebbo solo explica cómo restaurar paquetes usando nuget.exe. – Frith

+0

Probablemente deberías especificar qué parte de la pregunta responderás, cuando miras el título de la pregunta y la respuesta aceptada, es fácil considerar que esta respuesta está fuera de lugar ... – Jens

Cuestiones relacionadas