Вы можете использовать библиотеки пакетов 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, вы можете открыть каталог решений, и у вас должен быть каталог пакетов.Передайте это как корневой каталог.