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

Rob*_*Rob 189 visual-studio-2010 visual-studio nuget

我目前正在开发一个最初包含一个项目(My.First.Project.Name)的解决方案.我通过执行以下命令安装了Castle Windsor:

Install-Package Castle.Windsor
Run Code Online (Sandbox Code Playgroud)

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

dav*_*owl 319

有3种方法:).
在NuGet 1.1(最新版本)中,我们改进了powershell管道,因此您可以这样做:

Get-Project -All | Install-Package SomePackage
Run Code Online (Sandbox Code Playgroud)

这将在您的所有项目中安装"SomePackage".您可以使用通配符来缩小哪些项目:

Get-Project Mvc* | Install-Package SomePackage
Run Code Online (Sandbox Code Playgroud)

这将使用通配符语义(在这种情况下,查找以mvc开头的所有项目).

Get-Project SomeProject | Install-Package SomePackage
Run Code Online (Sandbox Code Playgroud)

这将SomePackage安装到SomeProject而不是其他任何东西.

  • 下拉列表中选定的一个 (10认同)
  • @ Eternal21您可以在Package Manager Console窗口中从项目下拉列表中选择当前项目. (6认同)
  • 而第3个方法只是调用`Install-Package SomePackage`将它安装在当前项目中. (3认同)

Haa*_*ked 139

有两种方法.

如您所知,软件包管理器控制台有一个下拉列表,列出了解决方案中的项目.

另一种方法是使用-Project标志.关于它的好处是它为您提供了Intellisense项目名称!例如:

Install-Package SomePackage -Project MvcApplication2
Run Code Online (Sandbox Code Playgroud)


Rob*_*Rob 82

答案是,令人尴尬的是,盲目地简单.

"包管理器控制台"在其工具栏中有一个标题为"默认项目"的下拉列表,将项目更改为My.Second.Project.Name允许Install-Package Castle.Windsor将包安装到第二个项目中.

  • 你的副词使用令人难以置信,毫无疑问,令人愉快 (2认同)

Tom*_*dee 13

在Visual Studio 2015中(从Nuget v3.1.2开始),语法现在是:

Install-Package ThePackage -ProjectName YourProjectName
Run Code Online (Sandbox Code Playgroud)

注意: - 项目名称 vs -Project


Sai*_*irl 8

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

  • 我从来不知道有这个窗户。超级给力,不错! (2认同)

小智 6

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