Best way to add NuGet packages as project references in VS2012?

Visual Studio-2012Nuget

Visual Studio-2012 Problem Overview


Ok. Really quick question, I'm probably just being thick.

If you right-click on a projects 'references' folder then 'Manage NuGet Packages' you can then install packages and they are automatically referenced by the project you clicked on. But then I want to add the same reference to other projects in the same solution. If you repeat previous but click on another project the only option is to uninstall the package (since it's already installed), what is the proper way to add an existing (already installed) NuGet package as a project reference? Am I to add the reference using the normal dialog and 'browse' to the dll in the packages folder? Use one method to add the first reference then another for subsequent references? That doesn't seem right.

Visual Studio-2012 Solutions


Solution 1 - Visual Studio-2012

You can use Manage NuGet packages for Solution... by:

  • right-clicking on solution
  • Tools > Library Package Manager > Manage NuGet packages for Solution

Then you can choose in which projects install package as on screenshot below: enter image description here Additionally you can add installed package to another projects in solution using the same Manage NuGet packages for Solution.... enter image description here

Solution 2 - Visual Studio-2012

The other answer here didn't help me. Here's what I did, I don't know any other way to do it. I'm using VS 2013.

  • I installed the package in the Package Manager Console, e.g. PM> Install-Package Newtonsoft.Json
  • In the Solution Explorer, right click references, select Add Reference
  • Click Browse, and navigate to the dll in the packages directory under the folder of the solution.

This adds a relative path for the reference to the project, so it should work with other people getting the code from source control into different directories.

Solution 3 - Visual Studio-2012

I had the same issue. The solution posted by kristianp has worked as expected, it can be a bit cumbersome however, when dealing with lots of packages. The solution, that worked for me was just to edit the myProjectName.csproj file in the notepad, and just to copy-paste references from another project like so:

...

<ItemGroup>
	<Reference Include="Microsoft.AspNet.SignalR.Core">
	  <HintPath>..\packages\Microsoft.AspNet.SignalR.Core.2.1.2\lib\net45\Microsoft.AspNet.SignalR.Core.dll</HintPath>
	</Reference>
	<Reference Include="Microsoft.AspNet.SignalR.SystemWeb">
	  <HintPath>..\packages\Microsoft.AspNet.SignalR.SystemWeb.2.1.2\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll</HintPath>
	</Reference>

	...

Hope this helps someone. It saved me a lot of clicking :)

Solution 4 - Visual Studio-2012

Nowadays I use the Package Manager Console (View->Other Windows->Package Manager Console).

Chances are all you'll ever need are the following two commands:

install-package <package-name> [-version <version-number>] [-project <project-name]

and

update-package <package-name> [-reinstall] [-version <version-number>] [-project <project-name>]

where

  • Parts within square brackets [ ] are optional.
  • 'install-package' will install to the specified project, or if not specified the one selected in the 'Default Project' drop down at the top of the command window.
  • 'update-package' will apply changes to every project unless a project is specified.
  • '-reinstall' means uninstall then install the package again at the same version number.

At first I thought the behaviour of these commands was a little weird, but with experience I see that they are most useful like this. Although personally I would ditch the 'Default Project' drop down entirely.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDr. Ogden WernstromView Question on Stackoverflow
Solution 1 - Visual Studio-2012Pavel BakshyView Answer on Stackoverflow
Solution 2 - Visual Studio-2012kristianpView Answer on Stackoverflow
Solution 3 - Visual Studio-2012Jan WView Answer on Stackoverflow
Solution 4 - Visual Studio-2012Dr. Ogden WernstromView Answer on Stackoverflow