如何将NuGet包安装到解决方案中的第二个项目?

199

我目前正在处理一个最初只包含一个项目(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包管理器将此软件包安装到第二个项目中

7个回答

327

有三种方法可以实现 :).
在 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中,而不会安装其他任何东西。


3
第三种方法是直接调用Install-Package SomePackage来将其安装到当前项目中。 - Jalal
1
但是,“current”项目是什么? - Chris W
12
下拉菜单中所选的项。 - davidfowl
@jalal,这不起作用,我刚在VS2015中尝试了一下。该软件包始终安装到第一个项目,而不是当前项目。 - Eternal21
7
您可以在“程序包管理器控制台”窗口中的“项目”下拉菜单中选择当前项目。 - Jalal
在输入 Get-Project 后按下 Tab 键,将会弹出一个项目下拉列表供选择,这样可以节省一些按键操作。 - rstreet

143

有两种方法。

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

另一种方法是使用“-Project”标志。好处在于它会为您提供与项目名称相关的智能感知!例如:

Install-Package SomePackage -Project MvcApplication2

84
答案很尴尬,但却非常简单。 "Package Manager Console" 工具栏中有一个名为 "Default Project" 的下拉列表,将该项目更改为 My.Second.Project.Name,然后可以使用 Install-Package Castle.Windsor 将包安装到第二个项目中。

2
你的副词使用令人难以置信、毫无疑问、令人愉悦。 - Alex Gordon

17

在 Visual Studio 2015 中(截至 NuGet v3.1.2),语法现在是:

Install-Package ThePackage -ProjectName YourProjectName

注意:-ProjectName与-Project的区别。


9
在Visual Studio中,您可以前往 工具 -> NuGet程序包管理器 -> 管理整个解决方案的NuGet程序包。从那里,选择要在项目之间共享的NuGet程序包,然后单击 管理。这将允许您将特定已安装的NuGet程序包添加到其他任何项目中。

2
我以前不知道这个窗口。超级强大,棒极了! - willem
我花了一个小时查看这个功能!非常感谢您提供的这个! - Marco Guignard
我没有看到“管理”按钮。它应该在哪里? - ROBERT RICHARDSON

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

0

还有一种选择是强制重新安装。对于某些问题,这对我很有帮助。

Update-Package Microsoft.Owin -Reinstall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接