2011-02-11 156 views
167

我目前正在研究一个最初包含一个项目的解决方案(My.First.Project.Name)。我已经安装了温莎城堡通过执行:如何在解决方案中的第二个项目中安装NuGet包?

Install-Package Castle.Windsor 

我刚刚加入另一个项目(My.Second.Project.Name)的解决方案,并希望温莎城堡安装到这个项目中也有,但是当我再次运行Install-Package Castle.Windsor,我得到的错误:

'Castle.Core 2.5.2' already installed
'Castle.Windsor 2.5.2' already installed
My.First.Project.Name already has a reference to 'Castle.Core 2.5.2'
My.First.Project.Name already has a reference to 'Castle.Windsor 2.5.2'

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

回答

288

有3种方法:)。
在1.1的NuGet(最新发布),我们已经改善PowerShell的管道,所以你可以这样做:

Get-Project -All | Install-Package SomePackage 

将安装“SomePackage”到所有项目。您可以使用通配符来缩小哪些项目:

Get-Project Mvc* | Install-Package SomePackage 

将使用通配符语义(在这种情况下,发现与MVC开始的所有项目)。

Get-Project SomeProject | Install-Package SomePackage 

这将安装SomePackage到SomeProject,没有别的。

+1

和3TH approache仅仅是调用`安装,包装SomePackage`对当前工程安装。 – Jalal 2012-06-02 11:29:33

+1

但什么是“当前”项目? – 2015-08-27 11:19:07

75

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

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

+2

你副词的用法是令人难以置信的,毫无疑问,愉快 – 2017-03-05 14:00:04

131

有两种方法。

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

另一种方法是使用-Project标志。关于这件事的好消息是它为您带来了项目名称的Intellisense!例如:

Install-Package SomePackage -Project MvcApplication2 
7

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

11

在Visual Studio 2015年(为V3.1.2的NuGet的)的语法是:

Install-Package ThePackage -ProjectName YourProjectName 

注:-Project 名称 VS -Project

6

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

0

还可以选择强制重新安装。有一些问题,这对我有帮助。

Update-Package Microsoft.Owin -Reinstall 
相关问题