2013-02-21 128 views
54

好的。真的很快的问题,我可能只是很厚。在VS2012中添加NuGet包作为项目引用的最佳方式?

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

回答

80

您可以通过使用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

+0

所以要从系统安装/删除软件包,请使用项目级上下文菜单,并使用解决方案级上下文菜单添加/删除项目中的引用。对。感谢您的回答。任何想法到底是什么导致项目在“选择项目”对话框中被检查,我有一个被检查的项目,但没有对包的引用,当我取消检查时,它只是回来。 – 2013-02-21 12:30:56

+0

明白了:packages.config。 – 2013-02-21 12:52:59

17

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

  • 我在包管理器控制台中安装了软件包,例如, PM> Install-Package Newtonsoft.Json
  • 在解决方案资源管理器中,右键单击引用,选择Add Reference
  • 点击浏览,以及解决方案的文件夹下导航到包目录中的DLL。

这为项目的引用添加了一个相对路径,所以它应该与其他人从源代码控制中获取代码到不同的目录中。

+1

这种方法存在一个问题:将来你会想要更新这个包,Nuget不会在你的项目中自动处理这个。因此,最终你会得到不同的项目引用同一个包的不同版本。这会导致运行时异常。所以最好通过Nuget包管理器添加引用,而不是手动添加。 – steavy 2017-03-28 15:41:51

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> 

    ... 

希望这可以帮助别人。它为我节省了大量的点击:)

相关问题