簡體   English   中英

有什么方法可以在命令行中檢查NuGet軟件包是否支持.Net標准?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM