什么是 project.lock.json?

What is project.lock.json?

我按照 instruction 创建新的 .NET Core 项目,运行 从 cmd:

dotnet new
dotnet restore

第二个语句创建 project.lock.json,其中包含大量垃圾(不是真正的垃圾,而是大量的依赖项、配置等)。我假设这些依赖项是 .NET 框架,它被分解成单独的 NuGet 包。

我的问题:

  1. 我的假设正确吗?
  2. 我可以通过删除不需要的 NuGet 使我的应用程序更轻量吗packages/dependencies?
  3. 如何?

更新project.json 已替换为 .csproj 作为 .NET Standard 项目的主项目文件。本题参考PackageReference in NuGet 4.0.

引入前的旧系统

您可能偶尔会看到 project.lock.json 作为构建过程的产物,但应该忽略它。管理 .NET Standard/.NET Core 项目所依赖的 NuGet 包应该始终由

  • 直接编辑 .csproj 文件
  • 使用 dotnet CLIdotnet add package 等)
  • 如果您使用 Visual Studio
  • ,请使用包管理器 GUI

后代的旧答案project.lock.json 是在您恢复项目包时由 .NET 工具生成的。您不应该触摸它或将其签入源代码管理。直接编辑project.json

在包还原过程中 (dotnet restore),NuGet 必须分析项目中的依赖关系,遍历 它们的 依赖关系图,并找出应该包含哪些包为您的项目和项目的依赖项安装。

这是一项非常重要的工作,因此将结果缓存在 project.lock.json 中以使后续恢复更快、更高效。修改project.json,再次执行dotnet restore,会重新生成锁文件

在我们的团队中,当有人更新一些 nuget 时,我们经常遇到同样的问题,lock.json 文件没有得到更新,甚至 运行ning dotnet restore 因此,在应用最后一个选择(删除它们)之前,我建议从您的命令行 运行 g运行t 。 如果这不起作用,请删除所有 lock.json 文件和 运行 dotnet restore,这是我最喜欢的选择 ;)