157

假设我有一个包含 3 个项目的解决方案:

  • 用户界面
  • 测试

我使用的一些 NuGet 包将适用于所有 3 个项目。有些只适用于 UI 和测试,有些只适用于测试(如 NUnit)。

使用 NuGet 进行设置的正确方法是什么?

  1. 我是否应该在需要参考时在所有三个项目上使用“添加库包参考”?
  2. 我是否应该在第一次需要包时使用“添加库包引用”,然后使用添加引用->浏览以进行后续使用?

无论哪种情况,我应该拥有多少个 packages.config文件?

4

6 回答 6

243

对于任何偶然发现这一点的人,现在有以下选项:

右键单击您的解决方案 > 管理解决方案的 NuGet 包...

... 或者:

工具 > 库包管理器 > 管理解决方案的 NuGet 包...

如果您转到已安装的包区域,您可以在解决方案中的每个项目中“管理”单个包。

于 2011-12-28T07:59:35.883 回答
77

使用控制台定位多个项目

Tools > Library Package Manager > Package Manager Console

然后使用这个命令

Get-Project PROJECT-NAMES-WITH-COMMAS | Install-Package PACKAGENAME

例如

Get-Project Core,UI | Install-Package FluentDateTime
于 2011-04-03T01:16:06.583 回答
21

这个甜蜜的交易对我有用:

PM> Get-Project -all | where {$_.Name -match "Songhay.Silverlight" -and
    $_.Name -notmatch "ApplicationLoader" -and $_.Name -notmatch ".Xml"}
    | ForEach-Object {Install-Package MvvmLight -project $_.Name}
于 2011-05-04T19:34:15.193 回答
12

如果您想跨多个解决方案安装一个包,我编写了一个方便的 Powershell 脚本来执行此操作,请参见此处

您甚至可以过滤Get-Project -All命令并定位项目列表的子集。

于 2011-03-24T22:10:22.547 回答
8

您应该为解决方案中每个项目的所有外部库使用“添加库包引用”。您最终会得到每个项目的 packages.config。

但是,您只需下载一次包,然后在本地将它们用于所有其他项目。

于 2011-03-24T12:11:33.447 回答
2

包管理器控制台中,您可以编写以下命令

Get-Project -all | ForEach-Object {Get-Package -ProjectName $_.Name -filter 
PACKAGE_NAME} | where-object { $_.id -eq 'PACKAGE_NAME' } | Install-Package 
PACKAGE_NAME -Version VERSION

您也可以使用该命令进行安装或更新(更新包)

于 2017-10-02T10:19:56.230 回答