.net core: 为什么dotnet restore 会生成一个"lock" 文件,它有什么用?
.net core: Why dotnet restore generates a "lock" file, what's the usage of it?
我是 dot.net 核心的新手,尝试了示例、dotnet new、dotnet restore、dotnet 运行。
在第二步(dotnet restore)之后,我试图删除这个锁定文件,然后 "dotnet run" 失败了,因为它说它需要一个锁定文件。微软为什么要设计这样一个"lock"文件,为什么"run"命令需要这样一个锁文件?
如果这个锁文件是为了防止多个进程构建项目,那么它只需要是一个空文件,作为一个"lock"。但实际上,这个文件相对于其他源代码来说是相当大的。
如果您查看锁定文件,您会发现它包含已恢复的每个依赖项的确切版本的详细信息,可传递。 "locks" dotnet restore
之前的那组版本又是 运行。
我相信目标至少 是 允许开发人员决定是否将 project.lock.json
文件签入源代码管理,从而更好地控制更新依赖项的确切时间会被使用。我认为关于 when/whether 这是个好主意仍有一些争论。
它还允许多个工具直接查看依赖关系图,而不需要再次计算它(如果依赖关系发生变化,可能以一种不稳定的方式)。
有差异。如果您检查该文件的内容,您会发现它包含应用程序正在使用的所有 NuGet 包的完整列表。这不一定与 project.json 中包含的内容相同,因为 project.json 可以使用通配符并且对其版本(例如 1.0.0.*)含糊不清。它也比 project.json 更完整,因为它包括 project.json 中指定的框架中包含的所有库。这是 project.json.lock 文件的一小段摘录:
摘自:
https://blog.falafel.com/what-is-project-lock-json/
"locked": false,
"version": -9996,
"targets": {
"DNX,Version=v4.5.1": {
"Microsoft.AspNet.DataProtection.Abstractions/1.0.0-beta5": {
"dependencies": {
"Microsoft.Framework.Runtime.Abstractions": "1.0.0-beta5"
},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.Core",
"Microsoft.CSharp"
],
"compile": {
"lib/dnx451/Microsoft.AspNet.DataProtection.Abstractions.dll": {}
},
"runtime": {
"lib/dnx451/Microsoft.AspNet.DataProtection.Abstractions.dll": {}
}
}
我是 dot.net 核心的新手,尝试了示例、dotnet new、dotnet restore、dotnet 运行。
在第二步(dotnet restore)之后,我试图删除这个锁定文件,然后 "dotnet run" 失败了,因为它说它需要一个锁定文件。微软为什么要设计这样一个"lock"文件,为什么"run"命令需要这样一个锁文件?
如果这个锁文件是为了防止多个进程构建项目,那么它只需要是一个空文件,作为一个"lock"。但实际上,这个文件相对于其他源代码来说是相当大的。
如果您查看锁定文件,您会发现它包含已恢复的每个依赖项的确切版本的详细信息,可传递。 "locks" dotnet restore
之前的那组版本又是 运行。
我相信目标至少 是 允许开发人员决定是否将 project.lock.json
文件签入源代码管理,从而更好地控制更新依赖项的确切时间会被使用。我认为关于 when/whether 这是个好主意仍有一些争论。
它还允许多个工具直接查看依赖关系图,而不需要再次计算它(如果依赖关系发生变化,可能以一种不稳定的方式)。
有差异。如果您检查该文件的内容,您会发现它包含应用程序正在使用的所有 NuGet 包的完整列表。这不一定与 project.json 中包含的内容相同,因为 project.json 可以使用通配符并且对其版本(例如 1.0.0.*)含糊不清。它也比 project.json 更完整,因为它包括 project.json 中指定的框架中包含的所有库。这是 project.json.lock 文件的一小段摘录:
摘自: https://blog.falafel.com/what-is-project-lock-json/
"locked": false,
"version": -9996,
"targets": {
"DNX,Version=v4.5.1": {
"Microsoft.AspNet.DataProtection.Abstractions/1.0.0-beta5": {
"dependencies": {
"Microsoft.Framework.Runtime.Abstractions": "1.0.0-beta5"
},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.Core",
"Microsoft.CSharp"
],
"compile": {
"lib/dnx451/Microsoft.AspNet.DataProtection.Abstractions.dll": {}
},
"runtime": {
"lib/dnx451/Microsoft.AspNet.DataProtection.Abstractions.dll": {}
}
}