无论如何要读取 NuGet 包文件的元数据吗?
我真的很想创建一个简单的站点来在我的 nupkg 文件中进行搜索..
提前致谢!
NuGet.Core包包含用于读取包元数据的官方 API 。
要阅读有关单个 .nupkg 文件的信息,请使用类似于以下的代码。
var myPackage = new ZipPackage(@"C:\Path\to\MyPackage.1.0.0.nupkg");
Console.WriteLine("Id: {0}", myPackage.Id);
Console.WriteLine("Version: {0}", myPackage.Version);
Console.WriteLine(
"Assemblies: {0}",
myPackage.AssemblyReferences.Select(a => a.Name).ToArray());
也有类似的类用于读取包源(又名 Feed)等。
如果您在服务器中部署了 nuget,则可以访问 nugetCore API 来访问所有元数据。
using NuGet;
示例代码
IPackageRepository repo =
PackageRepositoryFactory.Default.CreateRepository("https://nugetserver.sample/nuget");
//Initialize the package manager
string path = "../../xyx";
PackageManager packageManager = new PackageManager(repo, path);
var package = packageManager.SourceRepository.GetPackages()
.OrderByDescending(p => p.Version).Where(p => p.Id == packageName).FirstOrDefault();
var version = package.Version.ToFullString();
var packageName = package.GetFullName();
完成这项工作的实际代码如下
var package = packageManager.SourceRepository.GetPackages()
.OrderByDescending(p => p.Version).Where(p => p.Id == packageName).FirstOrDefault();