我对构建项目时创建的dotnet核心.deps.json文件有一个较为深入的问题。
我们正在2台不同的计算机上构建项目,并且比较在计算机上生成的.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属性是什么?它们是如何生成的?
答案 0 :(得分:3)
我知道了。
sha512属性是本地Nuget缓存中Nuget包位置的绝对路径的哈希版本。 这意味着,如果两个不同的用户正在构建项目,则这些值在构建之间可能会有所不同,因为Nuget缓存通常位于当前用户的主文件夹中。
我基本上需要向我们的合规团队解释这种差异,并确保sha512属性不代表nuget软件包或其完整性的某种校验和。
我会保留主题,希望它对以后遇到相同问题的其他用户有用。