2017-08-20 23 views
0

我工作的地方,我需要以编程方式识别作为PackageReference添加在我当前项目中的Nuget包是一个元包或常规包。由于没有足够的关于Nuget V3 API的文档,发现很难获得这些细节。任何指针在这方面的赞赏。如何识别Nuget元组件?

我试过下面的代码和方法GetMetadataAsync返回NuGet.Protocol.PackageSearchMetadata类型的集合,但是没有这种类型的任何属性,它说包是元包。

private async void button1_Click(object sender, EventArgs e) 
    { 
     ILogger log = new Logger(); 
     List<Lazy<NuGet.Protocol.Core.Types.INuGetResourceProvider>> providers = new List<Lazy<NuGet.Protocol.Core.Types.INuGetResourceProvider>>(); 
     providers.AddRange(Repository.Provider.GetCoreV3()); 
     PackageSource packageSource = new PackageSource("https://api.nuget.org/v3/index.json"); 
     SourceRepository sourceRepository = new SourceRepository(packageSource, providers); 
     PackageMetadataResource packageMetadataResource = await sourceRepository.GetResourceAsync<PackageMetadataResource>(); 
     IEnumerable<IPackageSearchMetadata> searchMetadata = await packageMetadataResource.GetMetadataAsync("Microsoft.AspNetCore.All", true, true,log, CancellationToken.None); 
     var list = searchMetadata.ToList(); 

    } 

回答

1

“metapackage”更多的是构造一个nuget包而不是一个包中的实际“type”/“property”。 如果一个NuGet包没有包含任何资产(库,内容资产,工具,构建逻辑等) - 实际上是空的 - 但只依赖于其他包,它被称为“元包”。测试软件包是否符合此定义的唯一方法是下载并检查其资产。