NuGet针对多个项目的解决scheme
假设我有3个项目的解决scheme:
- 核心
- UI
- testing
我使用的一些NuGet包将适用于所有3个项目。 有些只适用于UI和testing,有些只适用于testing(如NUnit)。
使用NuGet进行设置的正确方法是什么?
- 我应该在任何时候使用“添加库包参考”三个项目,我需要一个参考?
- 我应该在第一次使用“添加库包参考”时,需要一个包,然后使用添加引用 – >浏览以供后续使用?
在这两种情况下,我应该有多less个packages.config文件?
对于有人绊倒这个,现在有以下select:
右键单击您的解决scheme>pipe理NuGet软件包解决scheme…
… 要么:
工具>库包pipe理器>pipe理解决scheme的NuGet包…
如果您转到“已安装的软件包”区域,则可以在解决scheme的每个项目中“pipe理”一个软件包。
您可以使用控制台来定位多个项目
Tools > Library Package Manager > Package Manager Console
然后使用这个命令
Get-Project PROJECT-NAMES-WITH-COMMAS | Install-Package PACKAGENAME
例如
Get-Project Core,UI | Install-Package FluentDateTime
这个甜蜜的交易适合我:
PM> Get-Project -all | where {$_.Name -match "Songhay.Silverlight" -and $_.Name -notmatch "ApplicationLoader" -and $_.Name -notmatch ".Xml"} | ForEach-Object {Install-Package MvvmLight -project $_.Name}
如果你想在多个解决scheme中安装一个软件包,我写了一个方便的Powershell脚本来实现,参见这里 。
你甚至可以过滤Get-Project -All
命令并定位项目列表的一个子集。
您应该在解决scheme中的每个项目上为所有外部库使用“添加库包参考”。 你将最终为每个项目的packages.config。
不过,您只需下载一次该软件包,然后在本地为所有其他项目重新使用它们。
在包pipe理器控制台中,您可以编写以下命令 :
Get-Project -all | ForEach-Object {Get-Package -ProjectName $_.Name -filter PACKAGE_NAME} | where-object { $_.id -eq 'PACKAGE_NAME' } | Install-Package PACKAGE_NAME -Version VERSION
您也可以使用该命令进行安装或更新(Update-Package)