【问题标题】:.net core: Why dotnet restore generates a "lock" file, what's the usage of it?.net core:为什么dotnet restore会生成一个“lock”文件,它的用途是什么?
【发布时间】:2016-07-15 07:42:32
【问题描述】:

我是 dot.net core 的新手,尝试了示例、dotnet new、dotnet restore、dotnet run。

在第二步(dotnet restore)之后,我尝试删除此锁定文件,然后“dotnet run”失败,因为它说它需要一个锁定文件。为什么微软要设计这样一个“锁”文件,为什么“运行”命令需要这样一个锁文件?

如果这个锁文件是为了防止多个进程构建项目,那么它只需是一个空文件,充当“锁”。但实际上,这个文件和其他源代码相比是相当大的。

【问题讨论】:

标签: .net locking restore .net-core


【解决方案1】:

如果您查看锁定文件,您会发现它包含已恢复的每个依赖项的确切版本的详细信息,可传递。这会“锁定”这组版本,直到再次运行 dotnet restore

我相信目标至少允许开发人员决定是否将project.lock.json 文件签入源代码控制,从而更好地控制何时使用更新的依赖项。我认为关于何时/是否是个好主意仍有一些争论。

它还允许多个工具直接查看依赖关系图,而无需再次计算(如果依赖关系发生变化,以一种可能不稳定的方式)。

【讨论】:

  • 我现在在dotnet restore 上收到错误消息。这怎么可能?
  • @mbob:我建议你用你的 project.json 提出一个新问题(或者更好,一个仍然可以证明问题的最小问题)以及你得到的确切错误。确保您提供有关您正在使用的 .NET Core SDK 版本的详细信息,因为新版本使用 csproj 而不是 project.json
【解决方案2】:

存在差异。如果您检查文件的内容,您会看到它包含应用程序正在使用的所有 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": {}
                    }
                  }

【讨论】:

    猜你喜欢
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 2016-11-06
    • 2011-10-14
    • 2010-09-27
    • 2011-12-17
    相关资源
    最近更新 更多