dotnet Core:.deps.json 中使用的 sha512 和 shaPath 属性是什么

Hen*_*alg 1 .net-core asp.net-core

我有一个关于 dotnet core .deps.json 文件的深入问题,该文件是在构建项目时创建的。

我们在两台不同的机器上构建项目,当比较机器上生成的 .deps.json 文件时,所有行都是相同的,除了 json 对象“库”部分中的实体的 sha512 属性。

"libraries": {
"App.Metrics/3.0.0": {
  "type": "package",
  "serviceable": true,
  "sha512": "sha512-lU4mow+EjnD86gRQUGyiVfqoURXQuXdgJHAdqJxqhujUs1ItAZJNlQxQmswZsYmYfsrrrq3hswTXAutOdsQGMQ==",
  "path": "app.metrics/3.0.0",
  "hashPath": "app.metrics.3.0.0.nupkg.sha512"
},
"App.Metrics.Abstractions/3.0.0": {
  "type": "package",
  "serviceable": true,
  "sha512": "sha512-5X12M6AzBuJUE1LjRXrOo5HnbekICFd7/8A0L0IEe021P2EVEyxbeOZLOKloGwUiTlJ6Uic/K130CI/kylyvFg==",
  "path": "app.metrics.abstractions/3.0.0",
  "hashPath": "app.metrics.abstractions.3.0.0.nupkg.sha512"
}
.......
Run Code Online (Sandbox Code Playgroud)

我需要帮助弄清楚为什么这些哈希值会因构建项目的机器而异。

值得一提的是,构建是通过 TeamCity BuildAgent 在两台机器上使用相同的 dotnet 版本进行的。两台机器之间唯一可见的区别是应用程序工作目录的绝对路径,在 .deps.json 中不可见。

所以,简而言之:.deps.json 文件中的 sha512 和 shaPath 属性是什么,它们是如何生成的?

Hen*_*alg 7

我想到了。

sha512 属性是本地 Nuget 缓存中 Nuget 包位置的绝对路径的散列版本。这意味着如果两个不同的用户正在构建项目,这些值在构建之间可能会有所不同,因为 Nuget 缓存通常位于当前用户的主文件夹中。

我基本上需要向我们的合规团队解释这种差异,并确保 sha512 属性不代表 nuget 包或其完整性的某种校验和。

我将保留该线程,希望它对将来遇到相同问题的其他用户有用。