![](/img/trans.png)
[英]What is the best way to support multiple .net versions in nuget package?
[英]Is there any way to check if a NuGet package support .Net standard in command line?
我列出了我的項目所依賴的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方法的directory
中循環瀏覽每個包,並檢查每個包。 對於每個包,我們將其解析為PackageArchiveReader
,后者讀取包文件並提取包中的所有元數據。 然后,您可以查詢程序包支持的框架。
您將需要以下引用來運行此代碼-
using NuGet.Packaging;
using System;
using System.IO;
using System.Linq;
剩下的唯一事情就是您將所有軟件包都放在一個公共目錄中。 如果使用的是packages.config類型的項目,則可以打開解決方案目錄,並且應該有一個packages目錄。 將其作為根目錄傳遞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.