¿Cómo instalo un paquete NuGet en el segundo proyecto en una solución?

195

Actualmente estoy trabajando en una solución que inicialmente contenía un proyecto ( My.First.Project.Name). He instalado Castle Windsor ejecutando:

Install-Package Castle.Windsor

Acabo de agregar otro proyecto ( My.Second.Project.Name) a la solución y también quiero instalar Castle Windsor en este proyecto, pero cuando vuelvo a ejecutar Install-Package Castle.Windsor, aparece el error:

'Castle.Core 2.5.2' ya está instalado
'Castle.Windsor 2.5.2' ya está instalado
My.First.Project.Name ya tiene una referencia a 'Castle.Core 2.5.2'
My.First.Project.Name ya tiene un referencia a 'Castle.Windsor 2.5.2'

Entonces mi pregunta es: ¿Cómo puedo persuadir al Administrador de paquetes NuGet para que instale el paquete en el segundo proyecto ?

Robar
fuente

Respuestas:

323

Hay 3 enfoques :).
En NuGet 1.1 (la última versión) hemos mejorado la canalización de PowerShell para que pueda hacer esto:

Get-Project -All | Install-Package SomePackage

Eso instalará "SomePackage" en todos sus proyectos. Puede usar comodines para limitar qué proyectos:

Get-Project Mvc* | Install-Package SomePackage

Eso utilizará la semántica comodín (en este caso, busque todos los proyectos que comiencen con mvc).

Get-Project SomeProject | Install-Package SomePackage

Eso instalará SomePackage en SomeProject y nada más.

davidfowl
fuente
3
y el tercer enfoque simplemente está llamando Install-Package SomePackagepara instalarlo en el proyecto actual.
Jalal
1
Pero, ¿qué es el proyecto "actual"?
Zbigniew Wiadro
10
El seleccionado en el menú desplegable
davidfowl
@jalal Eso no funciona, solo lo probé en VS2015. El paquete siempre se instaló en el primer proyecto, no en el actual.
Eternal21
66
@ Eternal21 Puede seleccionar el proyecto actual del menú desplegable del proyecto en la ventana Consola del Administrador de paquetes.
Jalal
141

Hay dos enfoques.

Como ya aprendió, la consola de Package Manager tiene un menú desplegable que enumera los proyectos en su solución.

El otro enfoque es usar el indicador -Project. ¡Lo bueno de eso es que te da Intellisense con los nombres de los proyectos! Por ejemplo:

Install-Package SomePackage -Project MvcApplication2
Hackeado
fuente
82

La respuesta es embarazosamente vergonzosamente simple.

La "Consola del Administrador de paquetes" tiene un menú desplegable titulado "Proyecto predeterminado" en su barra de herramientas, cambiando el proyecto allí para My.Second.Project.Nameluego permitir la Install-Package Castle.Windsorinstalación del paquete en el segundo proyecto.

Robar
fuente
2
que el uso adverbio es increíblemente, sin duda, una delicia
l --''''''--------- '' '' '' '' '' ''
15

En Visual Studio 2015 (a partir de Nuget v3.1.2) la sintaxis es ahora:

Install-Package ThePackage -ProjectName YourProjectName

Nota: -Proyecto Nombre vs -Proyecto

Tom Studee
fuente
8

En Visual Studio, puedes ir a Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution. Desde allí, seleccione el paquete Nuget que desea compartir entre proyectos y haga clic Manage. Esto le permitirá agregar un paquete NuGet específico instalado a cualquier otro proyecto que desee.

SaiyanGirl
fuente
1
Nunca supe de esta ventana. Súper poderoso, agradable!
willem
¡He pasado una hora buscando esta funcionalidad! Muchas gracias por este!
Marco Guignard
6

Si solo necesita copiar paquetes del proyecto existente al nuevo, simplemente copie y / o modifique el archivo packages.config al nuevo proyecto y ejecute Update-Package -reinstall -Project YourProjectName

AdvanTiSS
fuente
0

También existe la opción de forzar una reinstalación. Con ciertos problemas, esto me ayudó.

Update-Package Microsoft.Owin -Reinstall
Damian Vogel
fuente