如何在不下载 Nuget 包的情况下获取它的 sha256?

How do I get the sha256 of a Nuget package without downloading it?

我想使用 Curl 获取给定 Nuget 包和版本的 sha256。我认为这几天是 Nuget API 的一部分,但是 URL 我需要点击什么才能获得哈希值?

感谢您提供链接,Mauricio Scheffer

这是相关的片段from Paket

open System.Net
open System.Xml.Linq

let getDetailsFromNuget name version =
  async {
    use wc = new WebClient()

    let! data =
      sprintf "https://www.nuget.org/api/v2/Packages(Id='%s',Version='%s')" name version
      |> wc.DownloadStringTaskAsync
      |> Async.AwaitTask

    let data = XDocument.Parse data

    let getAttribute attribute =
      let rootNs = XName.Get("entry", "http://www.w3.org/2005/Atom")

      let propertiesNs =
          XName.Get("properties", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata")

      let attributesNs attribute =
          XName.Get(attribute, "http://schemas.microsoft.com/ado/2007/08/dataservices")

      let properties =
          rootNs
          |> data.Element
          |> fun entry -> entry.Element(propertiesNs)

      properties.Element(attributesNs attribute).Value

    let packageHash = getAttribute "PackageHash"
    let packageHashAlgorithm = getAttribute "PackageHashAlgorithm"

    return packageHash, packageHashAlgorithm
  }

getDetailsFromNuget "FSharp.Core" "4.3.2"
|> Async.RunSynchronously
|> printfn "%A"

输出:

("CR5/gOr3EXghLOih4N+l8rlM4n5V3Vniv8L8tAeft5+P2QPSpU4CHF0YoTCXUpqfKXRQpvPej70MjHpBfgXJDA==", "SHA512")

PackageHashAlgorithm应该是"SHA256""SHA512"