在VS2012中添加NuGet包作为项目引用的最佳方法?

时间:2013-02-21 11:42:26

标签: visual-studio-2012 nuget

确定。真的很快问题,我可能只是很厚。

如果右键单击项目的“引用”文件夹,然后“管理NuGet包”,则可以安装包,它们会被您单击的项目自动引用。但后来我想在同一个解决方案中为其他项目添加相同的引用。如果您重复上一个但是单击另一个项目,唯一的选择是卸载软件包(因为它已经安装),将现有(已安装的)NuGet软件包添加为项目引用的正确方法是什么?我是使用普通对话框添加引用并“浏览”到packages文件夹中的dll吗?使用一种方法添加第一个引用然后添加另一个引用用于后续引用这似乎不对。

4 个答案:

答案 0 :(得分:84)

您可以使用Manage NuGet packages for Solution...

  • 右键点击解决方案
  • Tools > Library Package Manager > Manage NuGet packages for Solution

然后您可以选择安装包的项目,如下面的屏幕截图所示: enter image description here 此外,您可以使用相同的Manage NuGet packages for Solution...将已安装的软件包添加到解决方案中的其他项目。 enter image description here

答案 1 :(得分:19)

这里的另一个答案对我没有帮助。这就是我所做的,我不知道其他任何方式。我正在使用VS 2013.

  • 我在软件包管理器控制台中安装了软件包,例如: PM> Install-Package Newtonsoft.Json
  • 在Solution Explorer中,右键单击引用,选择Add Reference
  • 单击“浏览”,然后导航到解决方案文件夹下的packages目录中的dll。

这为项目的引用添加了一个相对路径,因此它应该与其他人一起使用从源代码管理中获取代码到不同的目录。

答案 2 :(得分:1)

我有同样的问题。由 kristianp 发布的解决方案已按预期工作,但在处理大量软件包时可能会有点麻烦。对我有用的解决方案只是编辑记事本中的 myProjectName.csproj 文件,而只是复制粘贴其他项目的引用,如下所示:

...

<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>

    ...

希望这有助于某人。它为我节省了很多点击次数:))

答案 3 :(得分:0)

现在,我使用 Package Manager控制台(查看->其他Windows-> Package Manager控制台)。

您所需要的就是以下两个命令:

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

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

其中

  • 方括号[]中的部分是可选的。
  • “安装程序包”将安装到指定的项目,或者,如果未指定,则在命令窗口顶部的“默认项目”下拉列表中选择的项目。
  • 除非指定了项目,否则
  • “更新包”将对每个项目应用更改。
  • '-reinstall'表示先卸载,然后再以相同的版本号安装软件包。

起初,我认为这些命令的行为有点怪异,但是根据经验,我发现它们像这样最有用。虽然我个人会完全放弃“默认项目”下拉列表。