How do I install a NuGet package into the second project in a solution?

89,464

Solution 1

There's 3 approaches :).
In NuGet 1.1 (The latest release) we've improved powershell pipelining so you can do this:

Get-Project -All | Install-Package SomePackage

That will install "SomePackage" into all of your projects. You can use wildcards to narrow down which projects:

Get-Project Mvc* | Install-Package SomePackage

That will use wildcard semantics (in this case, find all projects that start with mvc).

Get-Project SomeProject | Install-Package SomePackage

That will install SomePackage into SomeProject and nothing else.

Solution 2

There's two approaches.

As you already learned, the Package Manager Console has a drop down that lists the projects in your solution.

The other approach is to use the -Project flag. Nice thing about that is it gives you Intellisense with the project names! For example:

Install-Package SomePackage -Project MvcApplication2

Solution 3

The answer is, embarassingly, blindlingly simple.

The "Package Manager Console" has a drop-down titled "Default Project" in its toolbar, changing the project there to My.Second.Project.Name then allows Install-Package Castle.Windsor to install the package into the second project.

Solution 4

In Visual Studio 2015 (as of Nuget v3.1.2) the syntax is now:

Install-Package ThePackage -ProjectName YourProjectName

Note: -ProjectName vs -Project

Solution 5

In Visual Studio, you can go to Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution. From there, select the Nuget Package you want to share between projects and click Manage. This will allow you to add a specific installed NuGet Package to whichever other projects you want.

Share:
89,464

Related videos on Youtube

Rob
Author by

Rob

I work in the Foreign Exchange industry, with prior experience in Telecoms. My interests are wide and varied, though primarily around the Microsoft technology stack. Outside of tech, it's cooking, cats and New Zealand Sauvignon Blanc that tend to capture my interest! ;)

Updated on February 06, 2021

Comments

  • Rob
    Rob over 3 years

    I'm currently working on a solution that initially contained one project (My.First.Project.Name). I've installed Castle Windsor by executing:

    Install-Package Castle.Windsor
    

    I've just added another project (My.Second.Project.Name) to the solution and want to install Castle Windsor into this project also, but when I run Install-Package Castle.Windsor again, I get the error:

    'Castle.Core 2.5.2' already installed
    'Castle.Windsor 2.5.2' already installed
    My.First.Project.Name already has a reference to 'Castle.Core 2.5.2'
    My.First.Project.Name already has a reference to 'Castle.Windsor 2.5.2'

    So my question is: How do I persuade the NuGet Package Manager to install the package into the second project?

  • Jalal
    Jalal almost 12 years
    and 3th approache is simply calling Install-Package SomePackage to install it on current project.
  • Chris W
    Chris W over 8 years
    But what is "current" project?
  • davidfowl
    davidfowl over 8 years
    The selected one in the dropdown
  • Eternal21
    Eternal21 about 8 years
    @jalal That doesn't work, just tried it in VS2015. The package always installed to the first project, not the current one.
  • Jalal
    Jalal about 8 years
    @Eternal21 You can select current project from project drop-down in Package Manager Console window.
  • willem
    willem about 8 years
    I never knew about this window. Super powerful, nice!
  • Alex Gordon
    Alex Gordon about 7 years
    you adverb usage is unbelievably, unquestionably, delightful
  • Marco Guignard
    Marco Guignard almost 6 years
    I have spend one hour looking around this functionnality ! Thank you very much for this one !
  • ROBERT RICHARDSON
    ROBERT RICHARDSON over 3 years
    I do not see a "Manage" button. Where is it supposed to be?
  • rstreet
    rstreet over 2 years
    Pressing the tab key after Get-Project will give a drop-down of projects to choose from and can save a few keystrokes.