如何列出所有已安装的 NuGet 包?

Posted

技术标签:

【中文标题】如何列出所有已安装的 NuGet 包?【英文标题】:How do I list all installed NuGet packages? 【发布时间】:2014-04-17 07:43:24 【问题描述】:

如何列出所有本地安装的 NuGet 包?

是否有与 RPM -qa 等效的 NuGet?在Chocolatey 中有chocolatey list -localonly,但我终其一生都找不到与该命令等效的 NuGet。

【问题讨论】:

【参考方案1】:

NuGet 包管理器控制台中,输入以下命令:

Get-Package | Format-Table -AutoSize

这将打印出已安装软件包的列表,或者如果不存在,则将以下行写入控制台:

PM> Get-Package
No packages installed.

更多详情,请查看NuGet PowerShell Reference。

【讨论】:

有没有办法使用 nuget.exe 做到这一点? 运行命令Get-Package后,packages' names are trimmed当它们有超过32个字符时。是否可以增加包名列,以便输出显示全名而不修剪它们? Get-Package | Format-Table -AutoSize 会做到的【参考方案2】:

如果你这样做

Get-Package

它将列出包以及它们被引用的位置。如果您多次引用它们,它将一遍又一遍地列出相同的包。如果您想获得解决方案中安装的所有软件包的干净列表,您可以这样做

Get-Package | select -Unique Id, Versions

【讨论】:

排序:`Get-Package |选择 - 唯一 ID,版本 |排序 ID【参考方案3】:
Get-Package -ProjectName "Your.Project.Name"

将显示指定项目的包。

另请参阅:Package Manager Console PowerShell Reference

请注意,每个项目都有一个 packages.config 文件,用于跟踪已安装的包。如果这被改变(特别是如果你向后改变它),项目可能不会自动下载正确的包版本。在这种情况下,请记下所需的包并执行卸载包,然后为每个包执行安装包。

此外,备份是您的朋友! ;)

【讨论】:

【参考方案4】:

如果您安装了 .NET Core 运行时,则可以使用 .NET Core CLI 工具中的 dotnet list package 命令来获取给定解决方案或项目的已安装包。在 Windows 命令行中像这样使用它:

dotnet list "C:\Source\MySolution\MySolution.sln" package

它适用于 .NET Framework 和 .NET Core 项目。

注意:要使此命令起作用,解决方案必须使用new NuGet PackageReference format 来引用 NuGet 包。迁移很简单,只需右键单击 packages.config,然后单击“将 packages.config 迁移到 PackageReference...”,然后通过构建解决方案来恢复包。

【讨论】:

适用于 .NET Core 但不适用于 .NET 4.5 解决方案:至少在我的计算机上是这样。 @ChristianCasutt 我刚刚对其进行了测试,它在 .NET Framework 4.5 上运行良好,我唯一要做的就是 migrate from packages.config to PackageReference,然后通过构建解决方案来恢复 nuget 包。 引用/使用和安装没有区别吗? NuGet 包不是全局安装的,独立于解决方案/项目吗? @PeterMortensen 我在这里假设 OP 意味着为项目/解决方案安装。在全球范围内,下载的包被缓存,我认为“已安装”一词在这种情况下没有意义。【参考方案5】:

在 Visual Studio 中,

转到有问题的项目解决方案 右键单击,管理 NuGet 包... 在左侧,您将看到“Installed Packages” 点击这个,你会看到列表

【讨论】:

【参考方案6】:

除了所有给定的答案之外,还有一个以 XML 格式列出您的 Visual Studio 项目根文件夹中所有已安装包的干净列表:packages.config

【讨论】:

在我看来,最好的回应。 使用 Visual Studio 2017 版本 15.7 中引入的新项目文件结构,NuGet 包可以(或将用于新项目)移动到项目文件中,您将找不到 packages.config 文件。见Microsoft documentation。 这一次只给你一个项目。我的解决方案中有大约 250 个项目,因此如果您不想一次完成一个解决方案,其他答案会更好。 对于较新的解决方案,变化很大,您没有 packages.config 文件,而是在项目文件中甚至在锁定文件中使用 PackageReference。现在有几种方法可以列出 nuget 包!【参考方案7】:

回复"Is there a way to do this using nuget.exe? – bitbonk":

nuget list -Source C:/packages

其中 C:/packages 是本地存储库的路径。

【讨论】:

请注意,我必须使用绝对路径才能正常工作。【参考方案8】:

如何列出所有已安装的 NuGet 包?

假设NuGet is properly installed

右击Project节点并点击Manage NuGet Packages

查看已安装的软件包列表

【讨论】:

【参考方案9】:

回答“有没有办法使用 nuget.exe 做到这一点?” – bitbonk

根据上面jstar 的回答。我使用\ 而不是/,它更适合nuget 所在的Windows 环境。我对答案的编辑被拒绝了,所以我发布了我自己的。

nuget list -Source c:\code\packages

c:\code 是本地代码存储库的路径。 packages 文件夹与您的解决方案文件 (*.sln) 处于同一级别。

【讨论】:

但这列出了来源(包的来源),而不是已安装的包 (?)。

以上是关于如何列出所有已安装的 NuGet 包?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 编译错误 - 计算机中缺少 nuget 包,但 nuget restore 说所有包都已安装?

vs如何查看已有模块

Nuget表示缺少软件包,Package Manager Restore表示已安装所有软件包

在 VS 2010 项目模板中自动安装 NuGet 包

如何查看安装的 pip 包大小?

如何正确引用nuget包,这样就不会对路径进行硬编码