如何调用包管理器控制台并在 visual studio 扩展中执行 Find-Package

how to call Package Manager Console and execute Find-Package in visual studio extension

我正在开发 visual studio 扩展 (vsix)。

现在,我想获取最新版本的 nuget 包。我只找到了一种使用 Package Manager Consoledotnet CLI still not support search command.

的方法

那么,我如何调用 Package Manager Console 并执行 Find-Package 命令,或者有其他方法可以从特定包源服务器获取包的最新版本。

下面文档中的方法你试过没有?

https://docs.microsoft.com/en-us/nuget/guides/api/query-for-all-published-packages

我构建了一个带有客户命令项的简单 VSIX,它可以使用以下代码从 NuGet 执行搜索包(需要先将 Nuget.PackageManagement 安装到您的 VSIX 项目中)。

        List<Lazy<INuGetResourceProvider>> providers = new List<Lazy<INuGetResourceProvider>>();
        providers.AddRange(Repository.Provider.GetCoreV3());  // Add v3 API support
        //providers.AddRange(Repository.Provider.GetCoreV2());  // Add v2 API support
        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("JSON.net", true, true, null, NuGet.Common.NullLogger.Instance, CancellationToken.None);
        var a= searchMetadata.ToString();