¿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 ?

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.


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

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.


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


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.


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


0

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

Update-Package Microsoft.Owin -Reinstall
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.