Como instalo um pacote NuGet no segundo projeto de uma solução?

195

Atualmente, estou trabalhando em uma solução que continha inicialmente um projeto ( My.First.Project.Name). Instalei o Castle Windsor executando:

Install-Package Castle.Windsor

Acabei de adicionar outro projeto ( My.Second.Project.Name) à solução e também quero instalar o Castle Windsor neste projeto, mas quando executo Install-Package Castle.Windsornovamente, recebo o erro:

'Castle.Core 2.5.2' já instalado
'Castle.Windsor 2.5.2' já instalado
My.First.Project.Name já tem uma referência a 'Castle.Core 2.5.2'
My.First.Project.Name já possui um referência a 'Castle.Windsor 2.5.2'

Portanto, minha pergunta é: como convencer o NuGet Package Manager a instalar o pacote no segundo projeto ?

Roubar
fonte

Respostas:

323

Existem 3 abordagens :).
No NuGet 1.1 (versão mais recente), aprimoramos o pipelining do powershell para que você possa fazer isso:

Get-Project -All | Install-Package SomePackage

Isso instalará "SomePackage" em todos os seus projetos. Você pode usar curingas para restringir quais projetos:

Get-Project Mvc* | Install-Package SomePackage

Isso usará a semântica de caracteres curinga (nesse caso, encontre todos os projetos que começam com mvc).

Get-Project SomeProject | Install-Package SomePackage

Isso instalará o SomePackage no SomeProject e nada mais.

davidfowl
fonte
3
e a 3ª abordagem está simplesmente ligando Install-Package SomePackagepara instalá-la no projeto atual.
Jalal
1
Mas o que é o projeto "atual"?
Zbigniew Wiadro 27/08/15
10
O selecionado no menu suspenso
davidfowl
@ jalal Isso não funciona, apenas tentei no VS2015. O pacote sempre instalado no primeiro projeto, não no atual.
Eternal21
6
@ Eternal21 Você pode selecionar o projeto atual no menu suspenso do projeto na janela Console do Gerenciador de Pacotes.
Jalal
141

Existem duas abordagens.

Como você já aprendeu, o Package Manager Console tem uma lista suspensa que lista os projetos em sua solução.

A outra abordagem é usar o sinalizador -Project. O legal é que ele fornece o Intellisense com os nomes dos projetos! Por exemplo:

Install-Package SomePackage -Project MvcApplication2
Haacked
fonte
82

A resposta é, embaraçosamente, cegamente simples.

O "Console do Gerenciador de Pacotes" possui um menu suspenso "Projeto Padrão" em sua barra de ferramentas, alterando o projeto para My.Second.Project.Namepermitir Install-Package Castle.Windsora instalação do pacote no segundo projeto.

Roubar
fonte
2
seu uso do advérbio é inacreditavelmente, inquestionavelmente delicioso
l --''''''--------- '' '' '' '' '' ''
15

No Visual Studio 2015 (a partir do Nuget v3.1.2), a sintaxe é agora:

Install-Package ThePackage -ProjectName YourProjectName

Nota: -Nome do projeto vs -Projeto

Tom Studee
fonte
8

No Visual Studio, você pode ir para Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution. A partir daí, selecione o Pacote Nuget que você deseja compartilhar entre os projetos e clique em Manage. Isso permitirá que você adicione um pacote NuGet instalado específico aos outros projetos que desejar.

SaiyanGirl
fonte
1
Eu nunca soube dessa janela. Super poderoso, legal!
willem 29/04
Passei uma hora olhando em volta dessa funcionalidade! Muito obrigado por este!
Marco Guignard
6

Se você apenas precisar copiar pacotes do projeto existente para o novo, copie e / ou modifique o arquivo packages.config para o novo projeto e execute Update-Package -reinstall -Project YourProjectName

AdvanTiSS
fonte
0

Há também a opção de forçar uma reinstalação. Com certos problemas, isso me ajudou.

Update-Package Microsoft.Owin -Reinstall
Damian Vogel
fonte