我目前正在开发一个最初包含一个项目(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软件包管理器将软件包安装到第二个项目中?
答案 0 :(得分:315)
有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中,而不是其他任何内容。
答案 1 :(得分:138)
有两种方法。
正如您已经了解的那样,程序包管理器控制台有一个下拉列表,其中列出了解决方案中的项目。
另一种方法是使用-Project标志。关于它的好处是它为您提供了Intellisense项目名称!例如:
Install-Package SomePackage -Project MvcApplication2
答案 2 :(得分:82)
答案是,令人尴尬的是,盲目地简单。
“程序包管理器控制台”在其工具栏中有一个标题为“默认项目”的下拉列表,将项目更改为My.Second.Project.Name
,然后允许Install-Package Castle.Windsor
将程序包安装到第二个项目中。 / p>
答案 3 :(得分:13)
在Visual Studio 2015中(从Nuget v3.1.2开始)语法现在是:
Install-Package ThePackage -ProjectName YourProjectName
注意: - 项目名称 vs -Project
答案 4 :(得分:8)
在Visual Studio中,您可以转到Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution
。从那里,选择要在项目之间共享的Nuget包,然后单击Manage
。这将允许您将特定的已安装NuGet包添加到您想要的任何其他项目。
答案 5 :(得分:6)
如果您只需要将包从现有项目复制到新项目,只需将packages.config文件复制和/或修改为新项目并运行Update-Package -reinstall -Project YourProjectName
答案 6 :(得分:0)
还可以选择强制重新安装。有一些问题,这对我有帮助。
Update-Package Microsoft.Owin -Reinstall