如何在解决方案的第二个项目中安装NuGet软件包?


195

我目前正在研究最初包含一个项目(My.First.Project.Name)的解决方案。我通过执行以下步骤安装了温莎城堡:

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软件包管理器将软件包安装到第二个项目中

Answers:


323

有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中,而不会执行其他任何操作。


3
而第三个方法只是调用Install-Package SomePackage将其安装在当前项目上。
Jalal 2012年

1
但是什么是“当前”项目?
Zbigniew Wiadro

10
下拉菜单中的选定对象
davidfowl 2015年

@jalal不起作用,只是在VS2015中尝试过。该软件包始终安装到第一个项目,而不是当前项目。
2016年

6
@ Eternal21您可以从Package Manager控制台窗口中的项目下拉列表中选择当前项目。
贾拉勒

141

有两种方法。

如您所知,Package Manager控制台有一个下拉列表,列出了解决方案中的项目。

另一种方法是使用-Project标志。不错的是,它为您提供了Intellisense项目名称!例如:

Install-Package SomePackage -Project MvcApplication2

82

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

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


2
您副词用法令人难以置信,毫无疑问,令人愉快
l --''''''---------''''''''''

15

在Visual Studio 2015(自Nuget v3.1.2起)中,语法现在为:

Install-Package ThePackage -ProjectName YourProjectName

注意:-项目名称与-项目


8

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


1
我从来不知道这个窗口。超级强大,不错!
willem

我已经花了一个小时寻找这种功能!非常感谢您!
Marco Guignard '18年

6

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.