在GitHub软件包上列出nuget软件包

时间:2020-04-12 19:15:11

标签: nuget github-package-registry

我在GitHub Packages上托管了nuget软件包。然后,当我尝试使用nuget.exe在github nuget feed中列出软件包时,它告诉我无法在feed中列出软件包:

> nuget list -Source "https://nuget.pkg.github.com/mabead/index.json"
WARNING: This version of nuget.exe does not support listing packages from package source 'https://nuget.pkg.github.com/mabead/index.json'.
No packages found.

请注意,当我使用单击“管理解决方案的Nuget程序包”后打开的窗口时,这些程序包已在Visual Studio中正确列出。因此,供稿有效,但不适用于nuget cli。

我正在使用nuget.exe 5.5.1版。

您知道我正在使用CLI列出软件包的什么内容吗?

1 个答案:

答案 0 :(得分:2)

此行为是由于并非所有的nuget服务器都公开相同的API集引起的。 here定义了可能实施的API的全部集合。

让我们将nuget.org的服务索引与GitHub之一进行比较。 nuget.org的一个here可用,它包含一组非常广泛的API。

{
  "version": "3.0.0",
  "resources": [
    {
      "@id": "https://azuresearch-usnc.nuget.org/query",
      "@type": "SearchQueryService",
      "comment": "Query endpoint of NuGet Search service (primary)"
    },
    {
      "@id": "https://azuresearch-ussc.nuget.org/query",
      "@type": "SearchQueryService",
      "comment": "Query endpoint of NuGet Search service (secondary)"
    },
    {
      "@id": "https://azuresearch-usnc.nuget.org/autocomplete",
      "@type": "SearchAutocompleteService",
      "comment": "Autocomplete endpoint of NuGet Search service (primary)"
    },
    {
      "@id": "https://azuresearch-ussc.nuget.org/autocomplete",
      "@type": "SearchAutocompleteService",
      "comment": "Autocomplete endpoint of NuGet Search service (secondary)"
    },
    {
      "@id": "https://azuresearch-usnc.nuget.org/",
      "@type": "SearchGalleryQueryService/3.0.0-rc",
      "comment": "Azure Website based Search Service used by Gallery (primary)"
    },
    {
      "@id": "https://azuresearch-ussc.nuget.org/",
      "@type": "SearchGalleryQueryService/3.0.0-rc",
      "comment": "Azure Website based Search Service used by Gallery (secondary)"
    },
    {
      "@id": "https://api.nuget.org/v3/registration5-semver1/",
      "@type": "RegistrationsBaseUrl",
      "comment": "Base URL of Azure storage where NuGet package registration info is stored"
    },
    {
      "@id": "https://api.nuget.org/v3-flatcontainer/",
      "@type": "PackageBaseAddress/3.0.0",
      "comment": "Base URL of where NuGet packages are stored, in the format https://api.nuget.org/v3-flatcontainer/{id-lower}/{version-lower}/{id-lower}.{version-lower}.nupkg"
    },
    {
      "@id": "https://www.nuget.org/api/v2",
      "@type": "LegacyGallery"
    },
    {
      "@id": "https://www.nuget.org/api/v2",
      "@type": "LegacyGallery/2.0.0"
    },
    {
      "@id": "https://www.nuget.org/api/v2/package",
      "@type": "PackagePublish/2.0.0"
    },
    {
      "@id": "https://www.nuget.org/api/v2/symbolpackage",
      "@type": "SymbolPackagePublish/4.9.0",
      "comment": "The gallery symbol publish endpoint."
    },
    {
      "@id": "https://azuresearch-usnc.nuget.org/query",
      "@type": "SearchQueryService/3.0.0-rc",
      "comment": "Query endpoint of NuGet Search service (primary) used by RC clients"
    },
    {
      "@id": "https://azuresearch-ussc.nuget.org/query",
      "@type": "SearchQueryService/3.0.0-rc",
      "comment": "Query endpoint of NuGet Search service (secondary) used by RC clients"
    },
    {
      "@id": "https://azuresearch-usnc.nuget.org/autocomplete",
      "@type": "SearchAutocompleteService/3.0.0-rc",
      "comment": "Autocomplete endpoint of NuGet Search service (primary) used by RC clients"
    },
    {
      "@id": "https://azuresearch-ussc.nuget.org/autocomplete",
      "@type": "SearchAutocompleteService/3.0.0-rc",
      "comment": "Autocomplete endpoint of NuGet Search service (secondary) used by RC clients"
    },
    {
      "@id": "https://api.nuget.org/v3/registration5-semver1/",
      "@type": "RegistrationsBaseUrl/3.0.0-rc",
      "comment": "Base URL of Azure storage where NuGet package registration info is stored used by RC clients. This base URL does not include SemVer 2.0.0 packages."
    },
    {
      "@id": "https://www.nuget.org/packages/{id}/{version}/ReportAbuse",
      "@type": "ReportAbuseUriTemplate/3.0.0-rc",
      "comment": "URI template used by NuGet Client to construct Report Abuse URL for packages used by RC clients"
    },
    {
      "@id": "https://api.nuget.org/v3/registration5-semver1/{id-lower}/index.json",
      "@type": "PackageDisplayMetadataUriTemplate/3.0.0-rc",
      "comment": "URI template used by NuGet Client to construct display metadata for Packages using ID"
    },
    {
      "@id": "https://api.nuget.org/v3/registration5-semver1/{id-lower}/{version-lower}.json",
      "@type": "PackageVersionDisplayMetadataUriTemplate/3.0.0-rc",
      "comment": "URI template used by NuGet Client to construct display metadata for Packages using ID, Version"
    },
    {
      "@id": "https://azuresearch-usnc.nuget.org/query",
      "@type": "SearchQueryService/3.0.0-beta",
      "comment": "Query endpoint of NuGet Search service (primary) used by beta clients"
    },
    {
      "@id": "https://azuresearch-ussc.nuget.org/query",
      "@type": "SearchQueryService/3.0.0-beta",
      "comment": "Query endpoint of NuGet Search service (secondary) used by beta clients"
    },
    {
      "@id": "https://azuresearch-usnc.nuget.org/autocomplete",
      "@type": "SearchAutocompleteService/3.0.0-beta",
      "comment": "Autocomplete endpoint of NuGet Search service (primary) used by beta clients"
    },
    {
      "@id": "https://azuresearch-ussc.nuget.org/autocomplete",
      "@type": "SearchAutocompleteService/3.0.0-beta",
      "comment": "Autocomplete endpoint of NuGet Search service (secondary) used by beta clients"
    },
    {
      "@id": "https://api.nuget.org/v3/registration5-semver1/",
      "@type": "RegistrationsBaseUrl/3.0.0-beta",
      "comment": "Base URL of Azure storage where NuGet package registration info is stored used by Beta clients. This base URL does not include SemVer 2.0.0 packages."
    },
    {
      "@id": "https://www.nuget.org/packages/{id}/{version}/ReportAbuse",
      "@type": "ReportAbuseUriTemplate/3.0.0-beta",
      "comment": "URI template used by NuGet Client to construct Report Abuse URL for packages"
    },
    {
      "@id": "https://www.nuget.org/packages/{id}/{version}?_src=template",
      "@type": "PackageDetailsUriTemplate/5.1.0",
      "comment": "URI template used by NuGet Client to construct details URL for packages"
    },
    {
      "@id": "https://api.nuget.org/v3/registration5-gz-semver1/",
      "@type": "RegistrationsBaseUrl/3.4.0",
      "comment": "Base URL of Azure storage where NuGet package registration info is stored in GZIP format. This base URL does not include SemVer 2.0.0 packages."
    },
    {
      "@id": "https://api.nuget.org/v3/registration5-gz-semver2/",
      "@type": "RegistrationsBaseUrl/3.6.0",
      "comment": "Base URL of Azure storage where NuGet package registration info is stored in GZIP format. This base URL includes SemVer 2.0.0 packages."
    },
    {
      "@id": "https://api.nuget.org/v3/registration5-gz-semver2/",
      "@type": "RegistrationsBaseUrl/Versioned",
      "clientVersion": "4.3.0-alpha",
      "comment": "Base URL of Azure storage where NuGet package registration info is stored in GZIP format. This base URL includes SemVer 2.0.0 packages."
    },
    {
      "@id": "https://api.nuget.org/v3-index/repository-signatures/4.7.0/index.json",
      "@type": "RepositorySignatures/4.7.0",
      "comment": "The endpoint for discovering information about this package source's repository signatures."
    },
    {
      "@id": "https://api.nuget.org/v3-index/repository-signatures/5.0.0/index.json",
      "@type": "RepositorySignatures/5.0.0",
      "comment": "The endpoint for discovering information about this package source's repository signatures."
    },
    {
      "@id": "https://api.nuget.org/v3/catalog0/index.json",
      "@type": "Catalog/3.0.0",
      "comment": "Index of the NuGet package catalog."
    }
  ],
  "@context": {
    "@vocab": "http://schema.nuget.org/services#",
    "comment": "http://www.w3.org/2000/01/rdf-schema#comment"
  }
}

可以在GitHub上使用的here包含的受支持API的数量要有限得多:

 {
      "version": "3.0.0-beta.1",
      "resources": [
        {
          "@id": "https://nuget.pkg.github.com/mabead/download",
          "@type": "PackageBaseAddress/3.0.0",
          "comment": "Get package content (.nupkg)."
        },
        {
          "@id": "https://nuget.pkg.github.com/mabead/query",
          "@type": "SearchQueryService",
          "comment": "Filter and search for packages by keyword."
        },
        {
          "@id": "https://nuget.pkg.github.com/mabead/query",
          "@type": "SearchQueryService/3.0.0-beta",
          "comment": "Filter and search for packages by keyword."
        },
        {
          "@id": "https://nuget.pkg.github.com/mabead/query",
          "@type": "SearchQueryService/3.0.0-rc",
          "comment": "Filter and search for packages by keyword."
        },
        {
          "@id": "https://nuget.pkg.github.com/mabead",
          "@type": "PackagePublish/2.0.0",
          "comment": "Push and delete (or unlist) packages."
        },
        {
          "@id": "https://nuget.pkg.github.com/mabead",
          "@type": "RegistrationsBaseUrl",
          "comment": "Get package metadata."
        },
        {
          "@id": "https://nuget.pkg.github.com/mabead",
          "@type": "RegistrationsBaseUrl/3.0.0-beta",
          "comment": "Get package metadata."
        },
        {
          "@id": "https://nuget.pkg.github.com/mabead",
          "@type": "RegistrationsBaseUrl/3.0.0-rc",
          "comment": "Get package metadata."
        }
      ]
    }

因此nuget.org支持执行nuget.exe list所需的API,而GitHub不支持,因此解释了控制台中解释的警告。