gpt4 book ai didi

.net - 有没有办法在命令行中检查 NuGet 包是否支持 .Net 标准?

转载 作者:行者123 更新时间:2023-12-05 05:16:35 24 4
gpt4 key购买 nike

我有一个列表,其中包含我的项目所依赖的 100 多个 NuGet 包。有什么方法可以检查这些包中哪些支持 .Net 标准,哪些不支持(无需一一检查并检查)?

最佳答案

如果您的磁盘上有任何包,您可以使用 NuGet 包库从任何包中读取框架。考虑以下代码作为示例 -

class Program
{
static void Main(string[] args)
{
var directory = @"F:\validation\test-local-source";
foreach (var file in Directory.GetFiles(directory, "*.nupkg", SearchOption.AllDirectories))
{
CheckPackage(file);
}
}

private static void CheckPackage(string path)
{
using (var package = new PackageArchiveReader(path))
{
var frameworks = package
.GetSupportedFrameworks()
.Where(f => f.DotNetFrameworkName.IndexOf(".NETStandard", StringComparison.OrdinalIgnoreCase) >= 0);

if (frameworks.Any())
{
Console.WriteLine($"{Path.GetFileNameWithoutExtension(path)}: {string.Join(";", frameworks)}");
}
else
{
Console.WriteLine($"{Path.GetFileNameWithoutExtension(path)}: ERROR");
}
}
}
}

在这里,我们在 main 方法中遍历 目录 中的每个包并检查每个包。对于每个包,我们将其解析为 PackageArchiveReader,它读取包文件并提取包中的所有元数据。然后你可以查询包支持的框架。

您将需要以下引用来运行此代码 -

using NuGet.Packaging;
using System;
using System.IO;
using System.Linq;

唯一剩下的就是将所有包放在一个公共(public)目录中。如果您使用的是 packages.config 类型的项目,那么您可以打开解决方案目录,您应该有一个 packages 目录。将其作为根目录传递。

关于.net - 有没有办法在命令行中检查 NuGet 包是否支持 .Net 标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50267137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com