gpt4 book ai didi

c# - .NET Core 如何以编程方式检索具有相同所有者的所有 nuget 包元数据?

转载 作者:行者123 更新时间:2023-12-04 08:53:47 25 4
gpt4 key购买 nike

使用 .NET Core/Standard (C#) 我想检索特定所有者的所有 nuget 包的详细信息。
例如,提供“charliepoole”会给我所有相关的包,如页面上的:https://www.nuget.org/profiles/charliepoole
我目前正在使用包 NuGet.ProjectModel按 ID/版本检索单个包,但似乎没有任何其他相关方法可以帮助我。
作为引用,这是我按 ID 和版本检索单个包的方式:

public async Task<IPackageSearchMetadata> GetPackageAsync(string id, string version, CancellationToken cancellationToken = default)
{
var packageSource = new PackageSource("https://api.nuget.org/v3/index.json", "NugetV3");

var providers = new List<Lazy<INuGetResourceProvider>>();

providers.AddRange(Repository.Provider.GetCoreV3());

var repo = new SourceRepository(packageSource, providers);


var packageMetadataResource = await repo.GetResourceAsync<PackageMetadataResource>(cancellationToken);

var packageIdentity = new PackageIdentity(id, NuGetVersion.Parse(version));

var context = new SourceCacheContext
{
NoCache = true,
DirectDownload = true
};

return await packageMetadataResource
.GetMetadataAsync(packageIdentity, context, new NullLogger(), cancellationToken);
}
这是否可以使用与 nuget API 对话的任何官方提供的 nuget 包?

最佳答案

Is this possible using any of the official supplied nuget packages that talk to the nuget API?


不是真的,不。
NuGet 客户端团队将他们在 nuget.org 上发布的包称为 NuGet (Client) SDK . NuGet.Protocol 是实现 NuGet 的 server HTTP API 客户端的包. NuGet SDK 没有实现所有的服务器 API,只是 Visual Studio 中使用的部分。
由于您的问题是关于搜索, search docs是相关的。看着 response schema ,我们可以看到 owners是字段之一,但查看 request parameters ,没有查询可以专门询问所有者。
因此,您可以尝试将您感兴趣的 nuget.org 帐户名作为搜索关键字传递,并希望搜索索引具有该信息。当您返回结果时,您可以检查每个包并忽略那些没有您正在寻找的包所有者帐户的包。
其他两个具有包元数据的服务器 API 资源是 catalog。 (摄取管道处理的所有包的事务日志)和 package metadata ,但都不显示所有者信息。
但是,NuGet 服务器团队的问题跟踪器是 GitHub 的 NuGet/NuGetGallary 存储库,我发现一个问题询问 how to get the list of owners of a given package on nuget.org .他们承认这是协议(protocol)的一个缺点。您可以对该问题进行投票以表明它很重要(到目前为止只有 1 个投票,所以这对大多数客户来说似乎并不重要)。但他们也回复了一个非官方的、未记录的 URL,其中包含所有包的所有者列表。您可以使用它,但显然要考虑理论上它可能随时更改的风险。话虽如此,该评论是2年前发布的,现在仍然有效。

关于c# - .NET Core 如何以编程方式检索具有相同所有者的所有 nuget 包元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63950981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com