.net - 什么是project.lock.json?

标签 .net .net-core project.json

我关注了instruction创建新的 .NET Core 项目并从 cmd 运行它:

dotnet new
dotnet restore

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

我的问题:

  1. 我的假设正确吗?
  2. 我可以通过删除不需要的 NuGet 包/依赖项来简化我的应用程序吗?
  3. 如何?

最佳答案

更新:project.json 已替换为 .csproj 作为 .NET Standard 项目的主项目文件。这个问题指的是之前介绍的旧系统PackageReference in NuGet 4.0 .

您可能仍然偶尔会看到 project.lock.json 作为构建过程的工件,但应该忽略它。管理 .NET Standard/.NET Core 项目所依赖的 NuGet 包应始终通过以下任一方式完成:

  • 直接编辑.csproj文件
  • 使用dotnet CLI (dotnet 添加包等)
  • 如果您使用的是 Visual Studio,请使用包管理器 GUI
<小时/>

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

在包恢复过程 (dotnet Restore) 中,NuGet 必须分析项目中的依赖项,遍历其依赖关系图,并找出应安装哪些包对于您的项目和项目的依赖项。

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

关于.net - 什么是project.lock.json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38065611/

相关文章:

c# - VS 2005 工具箱类控件.NET

c# - "PDB format is not supported"带有 .NET 可移植调试信息

c# - 在 aspnet core 运行时检查托管服务器是 IIS 还是 Kestrel

c# - System.ArgumentException : Format of the initialization string does not conform to specification starting at index 0. 3

asp.net-core-1.0 - 在为 Asp.net Core 1.0 项目编译时复制文件

asp.net-core - 基于解决方案配置的 Project.json 设置

c# - 将数组传递给 C# .Net 中特定索引的函数

pinvoke - 使用 Linux 在 .net 核心中使用 P-Invoke

css - 在 Angular 包中包含 CSS 文件

.net - Windows XP SP2 是否默认包含 .net 框架?