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 ?

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.


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

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.


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


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.


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


0

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

Update-Package Microsoft.Owin -Reinstall
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.