首页 文章

NuGet适用于多个项目的解决方案

提问于
浏览
141

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

  • 核心

  • UI

  • 测试

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

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

  • 我是否需要在所有三个项目中使用"Add Library Package Reference"?

  • 我第一次需要包时是否应该使用"Add Library Package Reference",然后使用Add Reference-> Browse进行后续使用?

在任何一种情况下,我应该有多少个packages.config文件?

6 回答

  • 12

    对于任何绊倒这个的人,现在有以下选项:

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

    ... 要么:

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

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

  • 18

    您可以使用控制台来定位多个项目

    Tools > Library Package Manager > Package Manager Console
    

    然后使用此命令

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

    例如

    Get-Project Core,UI | Install-Package FluentDateTime
    
  • 225

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

    PM> Get-Project -all | where {$_.Name -match "Songhay.Silverlight" -and
        $_.Name -notmatch "ApplicationLoader" -and $_.Name -notmatch ".Xml"}
        | ForEach-Object {Install-Package MvvmLight -project $_.Name}
    
  • 74

    如果你想跨多个解决方案安装一个软件包,我写了一个方便的Powershell脚本,请参阅here .

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

  • 8

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

    但是,您只需下载一次该软件包,并在本地重用所有其他项目 .

  • 1

    Package Manager Console 中,您可以编写以下 command

    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)

相关问题