我目前正在开发一个最初包含一个项目( 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 回答
有3种方法:) .
在NuGet 1.1(最新版本)中,我们改进了powershell管道,因此您可以这样做:
这将在您的所有项目中安装“SomePackage” . 您可以使用通配符来缩小哪些项目:
这将使用通配符语义(在这种情况下,查找以mvc开头的所有项目) .
这将把SomePackage安装到SomeProject中,而不是别的 .
有两种方法 .
如您所知,软件包管理器控制台有一个下拉列表,列出了解决方案中的项目 .
另一种方法是使用-Project标志 . 关于它的好处是它为您提供了Intellisense项目名称!例如:
答案是,令人尴尬的是,盲目地简单 .
"Package Manager Console"在其工具栏中有一个 Headers 为"Default Project"的下拉列表,将项目更改为
My.Second.Project.Name
,然后允许Install-Package Castle.Windsor
将包安装到第二个项目中 .在Visual Studio 2015中(从Nuget v3.1.2开始),语法现在是:
注意:-Project Name vs -Project
在Visual Studio中,您可以转到
Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution
. 从那里,选择要在项目之间共享的Nuget包,然后单击Manage
. 这将允许您将特定的已安装NuGet包添加到您想要的任何其他项目 .如果您只需要将包从现有项目复制到新项目,只需将packages.config文件复制和/或修改为新项目并运行
Update-Package -reinstall -Project YourProjectName
还有强制重新安装的选项 . 有些问题,这对我有帮助 .