17

无论如何要读取 NuGet 包文件的元数据吗?

我真的很想创建一个简单的站点来在我的 nupkg 文件中进行搜索..

提前致谢!

4

2 回答 2

20

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)等。

于 2012-10-30T20:14:48.670 回答
0

如果您在服务器中部署了 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();
于 2018-07-10T08:18:09.043 回答