从nupkg读取元数据

时间:2012-10-30 12:03:50

标签: c# .net nuget

无论如何都要阅读NuGet-package-file的元数据?

我真的想在我的nupkg文件中创建一个简单的网站..

提前致谢!

2 个答案:

答案 0 :(得分:19)

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());

还有类似的类来读取包源(也称为Feeds)等。

答案 1 :(得分: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();