Есть ли способ проверить, поддерживает ли пакет NuGet стандарт .Net в командной строке? - PullRequest
0 голосов
/ 10 мая 2018

У меня есть список из более чем 100 пакетов NuGet, от которых зависит мой проект. Есть ли способ проверить, какие из этих пакетов поддерживают стандарт .Net, а какие нет (не пройдя их один за другим и не проверив)?

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете использовать библиотеки пакетов 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");
            }
        }
    }
}

Здесь мы перебираем каждый пакет в directory в методе main и проверяем каждый пакет.Для каждого пакета мы анализируем его в PackageArchiveReader, который читает файл пакета и извлекает все метаданные в пакете.Затем вы можете запросить рамки, поддерживаемые пакетом.

Вам понадобятся следующие ссылки для запуска этого кода -

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

Остается только то, что у вас есть все пакеты в общем каталоге.Если вы используете тип проекта packages.config, вы можете открыть каталог решений, и у вас должен быть каталог пакетов.Передайте это как корневой каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...