Come installo un pacchetto NuGet nel secondo progetto in una soluzione?


195

Attualmente sto lavorando a una soluzione che inizialmente conteneva un progetto ( My.First.Project.Name). Ho installato Castle Windsor eseguendo:

Install-Package Castle.Windsor

Ho appena aggiunto un altro progetto ( My.Second.Project.Name) alla soluzione e voglio installare Castle Windsor anche in questo progetto, ma quando eseguo di Install-Package Castle.Windsornuovo, ricevo l'errore:

'Castle.Core 2.5.2' già installato
'Castle.Windsor 2.5.2' già installato
My.First.Project.Name ha già un riferimento a 'Castle.Core 2.5.2'
My.First.Project.Name ha già un riferimento a "Castle.Windsor 2.5.2"

Quindi la mia domanda è: come posso convincere il gestore di pacchetti NuGet a installare il pacchetto nel secondo progetto ?

Risposte:


323

Ci sono 3 approcci :).
In NuGet 1.1 (l'ultima versione) abbiamo migliorato il pipelining PowerShell in modo da poter fare questo:

Get-Project -All | Install-Package SomePackage

Ciò installerà "SomePackage" in tutti i tuoi progetti. È possibile utilizzare i caratteri jolly per restringere i progetti:

Get-Project Mvc* | Install-Package SomePackage

Che utilizzerà la semantica jolly (in questo caso, trova tutti i progetti che iniziano con mvc).

Get-Project SomeProject | Install-Package SomePackage

Ciò installerà SomePackage in SomeProject e nient'altro.


3
e la terza approvazione è semplicemente chiamata Install-Package SomePackageper installarlo sul progetto corrente.
Jalal,

1
Ma cos'è il progetto "attuale"?
Chris W,

10
Quello selezionato nel menu a discesa
davidfowl

@jalal Non funziona, l'ho appena provato in VS2015. Il pacchetto è sempre installato sul primo progetto, non su quello corrente.
Eternal21,

6
@ Eternal21 È possibile selezionare il progetto corrente dal menu a discesa del progetto nella finestra Console di Package Manager.
Jalal

141

Ci sono due approcci.

Come hai già appreso, la Console di gestione pacchetti ha un menu a discesa che elenca i progetti nella soluzione.

L'altro approccio è usare il flag -Project. La cosa bella è che ti dà Intellisense con i nomi dei progetti! Per esempio:

Install-Package SomePackage -Project MvcApplication2

82

La risposta è, imbarazzante, ciecamente semplice.

La "Console di gestione dei pacchetti" ha un menu a discesa intitolato "Progetto predefinito" nella sua barra degli strumenti, modificando lì il progetto per My.Second.Project.Nameconsentire quindi Install-Package Castle.Windsorl'installazione del pacchetto nel secondo progetto.


2
il tuo uso dell'avverbio è incredibilmente, senza dubbio, delizioso
l --'''''''--------- '' '' '' '' '' ''

15

In Visual Studio 2015 (a partire da Nuget v3.1.2) la sintassi è ora:

Install-Package ThePackage -ProjectName YourProjectName

Nota: -Project Name vs -Project


8

In Visual Studio, puoi andare a Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution. Da lì, selezionare il pacchetto Nuget che si desidera condividere tra i progetti e fare clic Manage. Ciò ti consentirà di aggiungere uno specifico pacchetto NuGet installato a qualsiasi altro progetto tu voglia.


1
Non ho mai saputo di questa finestra. Super potente, carino!
willem,

Ho passato un'ora a guardarmi attorno in questa funzione! Grazie mille per questo!
Marco Guignard,

6

Se hai solo bisogno di copiare i pacchetti dal progetto esistente a quello nuovo, copia e / o modifica il file package.config nel nuovo progetto ed esegui Update-Package -reinstall -Project YourProjectName


0

C'è anche l'opzione per forzare una reinstallazione. Con alcuni problemi, questo mi ha aiutato.

Update-Package Microsoft.Owin -Reinstall
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.