【问题标题】:Best way to add NuGet packages as project references in VS2012?在 VS2012 中添加 NuGet 包作为项目引用的最佳方法?
【发布时间】:2013-02-06 17:23:51
【问题描述】:

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

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

【问题讨论】:

    标签: visual-studio-2012 nuget


    【解决方案1】:

    您可以通过以下方式使用Manage NuGet packages for Solution...

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

    然后您可以选择在哪些项目中安装包,如下图所示: 此外,您可以使用相同的 Manage NuGet packages for Solution... 将已安装的包添加到解决方案中的另一个项目。

    【讨论】:

    • 因此,要从系统中安装/删除包,您可以使用项目级别的上下文菜单,而要从项目中添加/删除引用,您可以使用解决方案级别的上下文菜单。正确的。感谢您的回答。知道究竟是什么原因导致在“选择项目”对话框中检查项目,我有一个项目已检查但没有对包的引用,当我取消选中它时,它又回来了。跨度>
    【解决方案2】:

    这里的其他答案对我没有帮助。这就是我所做的,我不知道还有其他方法可以做到这一点。我正在使用 VS 2013。

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

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

    【讨论】:

    • 这种方法存在一个问题:当您将来想要更新这个包时,Nuget 不会在您的项目中自动处理这个问题。因此,您最终会得到引用同一包的不同版本的不同项目。这将导致运行时异常。所以最好通过 Nuget 包管理器添加引用,而不是手动添加。
    【解决方案3】:

    我有同样的问题。 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>
    
        ...
    

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

    【讨论】:

      【解决方案4】:

      现在我使用 Package Manager Console(查看->Other Windows->Package Manager Console)。

      您可能只需要以下两个命令:

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

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

      在哪里

      • 方括号 [ ] 中的部分是可选的。
      • 'install-package' 将安装到指定的项目,如果未指定,则安装在命令窗口顶部的“默认项目”下拉菜单中选择的项目。
      • 'update-package' 将对每个项目应用更改,除非指定项目。
      • '-reinstall' 表示卸载然后再次安装相同版本号的包。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-25
        • 2019-03-26
        • 1970-01-01
        相关资源
        最近更新 更多