我对在构建项目时创建的 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"
}
.......
我需要帮助来弄清楚为什么这些哈希因构建项目的机器而异。
值得一提的是,构建是通过 TeamCity BuildAgent 在两台机器上使用相同的 dotnet 版本进行的。两台机器之间唯一可见的区别是应用程序工作目录的绝对路径,在 .deps.json 中不可见。
因此,简而言之:.deps.json 文件中的 sha512 和 shaPath 属性是什么,它们是如何生成的?
最佳答案
我想通了。
sha512 属性是本地 Nuget 缓存中 Nuget 包位置的绝对路径的哈希版本。 这意味着如果两个不同的用户正在构建项目,这些值在构建之间可能会有所不同,因为 Nuget 缓存通常位于当前用户的主文件夹中。
我基本上需要向我们的合规团队解释这种差异,并确保 sha512 属性不代表 nuget 包或其完整性的某种校验和。
我会保留该线程,希望它对将来遇到相同问题的其他用户有用。
关于asp.net-core - 点网核心 : What are the sha512 and shaPath properties used for in . deps.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54538068/