首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取解决方案中使用的所有NuGet包的列表

获取解决方案中使用的所有NuGet包的列表
EN

Stack Overflow用户
提问于 2018-11-23 01:16:56
回答 7查看 16.7K关注 0票数 17

我正在寻找一种方法,可以使用命令行脚本而不是在Visual Studio中手动获取解决方案中每个项目(特别是版本)中所有使用过的NuGet包的列表。

使用Package Manager控制台和命令"Get-Package“可以得到我想要的东西,但在VS之外是不可用的。

我使用的是本地NuGet提要。我默认的包管理格式是PackageReference。

任何想法都会有帮助

EN

回答 7

Stack Overflow用户

发布于 2018-11-25 06:20:49

PackageReference作为包管理格式仅适用于每个项目。因此,您需要单独“分析”每个项目。

在命令行中,有“将”列出所有包的方法。这是"dotnet list package“命令。我说will,因为它还在预览中。您可以从here下载2.2.100版本。相关spec

最简单的用法示例是:

代码语言:javascript
运行
复制
dotnet list YourSln.sln package

如果不想使用dotnet.exe预览,可以考虑通过读取每个项目的资源文件来编写自己的工具,这是实际命令的作用。有关参考信息,请参见代码herehere

票数 17
EN

Stack Overflow用户

发布于 2018-11-23 03:36:04

我相信有更好的方法可以做到这一点,但在使用PackageReferences时,这里有一个简单的PowerShell方法:

代码语言:javascript
运行
复制
Get-Content .\<solution>.sln | where { $_ -match "Project.+, ""(.+)""," } | foreach { $matches[1] } | % {Get-Content $_ | Find "<PackageReference Include" } | Sort-Object -Unique

在.sln所在的文件夹中运行它。

它会产生如下输出:

我有意删除了重复项;如果您愿意,可以省略这一部分。

在我的例子中,这与Get-Package的输出相匹配,只有一个例外是Microsoft.NETCore.App,因为它在任何地方都没有作为依赖项列出,但很可能是从<TargetFramework>netcoreapp2.1</TargetFramework>派生出来的。

票数 11
EN

Stack Overflow用户

发布于 2020-07-11 02:50:50

在Visual Studio的包管理器控制台中运行此命令Get-Package | Select-Object Id, Version, LicenseUrl, ProjectName。取自这个答案:https://softwareengineering.stackexchange.com/a/286981

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53435715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档