【问题标题】:How do I install a NuGet package into the second project in a solution?如何将 NuGet 包安装到解决方案的第二个项目中?
【发布时间】:2023-10-28 13:41:01
【问题描述】:

我目前正在研究一个最初包含一个项目 (My.First.Project.Name) 的解决方案。我通过执行以下命令安装了 Castle Windsor:

Install-Package Castle.Windsor

我刚刚在解决方案中添加了另一个项目 (My.Second.Project.Name),并且还想将 Castle Windsor 安装到该项目中,但是当我再次运行 Install-Package Castle.Windsor 时,我得到了错误:

'Castle.Core 2.5.2' 已安装
'Castle.Windsor 2.5.2' 已安装
My.First.Project.Name 已经引用了“Castle.Core 2.5.2”
My.First.Project.Name 已经引用了“Castle.Windsor 2.5.2”

所以我的问题是:如何说服 NuGet 包管理器将包安装到第二个项目中

【问题讨论】:

    标签: visual-studio-2010 visual-studio nuget


    【解决方案1】:

    有 3 种方法:)。
    在 NuGet 1.1(最新版本)中,我们改进了 powershell 流水线,因此您可以这样做:

    Get-Project -All | Install-Package SomePackage
    

    这会将“SomePackage”安装到您的所有项目中。您可以使用通配符来缩小项目范围:

    Get-Project Mvc* | Install-Package SomePackage
    

    这将使用通配符语义(在这种情况下,查找所有以 mvc 开头的项目)。

    Get-Project SomeProject | Install-Package SomePackage
    

    这会将 SomePackage 安装到 SomeProject 中,仅此而已。

    【讨论】:

    • 第三种方法只是调用Install-Package SomePackage 将其安装到当前项目中。
    • 但什么是“当前”项目?
    • 下拉列表中选中的一项
    • @jalal 不行,刚在VS2015中试了一下。该软件包始终安装到第一个项目,而不是当前项目。
    • @Eternal21 您可以从包管理器控制台窗口的项目下拉列表中选择当前项目。
    【解决方案2】:

    有两种方法。

    正如您已经了解到的,包管理器控制台有一个下拉列表,其中列出了您的解决方案中的项目。

    另一种方法是使用 -Project 标志。这样做的好处是它为您提供了带有项目名称的 Intellisense!例如:

    Install-Package SomePackage -Project MvcApplication2
    

    【讨论】:

      【解决方案3】:

      答案非常简单,令人尴尬。

      “包管理器控制台”在其工具栏中有一个名为“默认项目”的下拉菜单,将那里的项目更改为 My.Second.Project.Name,然后允许 Install-Package Castle.Windsor 将包安装到第二个项目中。

      【讨论】:

      • you 副词的用法令人难以置信,毫无疑问,令人愉快
      【解决方案4】:

      在 Visual Studio 2015(从 Nuget v3.1.2 开始)中,现在的语法是:

      Install-Package ThePackage -ProjectName YourProjectName
      

      注意:-Project名称 vs -Project

      【讨论】:

        【解决方案5】:

        在 Visual Studio 中,您可以转到 Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution。从那里,选择要在项目之间共享的 Nuget 包,然后单击 Manage。这将允许您将特定安装的 NuGet 包添加到您想要的任何其他项目。

        【讨论】:

        • 我从来不知道这个窗口。超级强大,不错!
        • 我花了一个小时环顾这个功能!非常感谢这个!
        • 我没有看到“管理”按钮。它应该在哪里?
        【解决方案6】:

        如果您只需要将包从现有项目复制到新项目,只需将 packages.config 文件复制和/或修改到新项目并运行Update-Package -reinstall -Project YourProjectName

        【讨论】:

          【解决方案7】:

          还有强制重新安装的选项。对于某些问题,这对我有帮助。

          Update-Package Microsoft.Owin -Reinstall
          

          【讨论】: