什么是project.lock.json?

And*_*rei 71 .net .net-core project.json

我按照说明创建了新的.NET Core项目并从cmd运行:

dotnet new
dotnet restore
Run Code Online (Sandbox Code Playgroud)

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

我的问题:

  1. 我的假设是否正确?
  2. 我可以通过删除不需要的NuGet包/依赖项来使我的应用程序更轻松吗?
  3. 怎么样?

Nat*_*ini 96

更新:project.json已替换.csproj为.NET标准项目的主项目文件.这个问题是指在NuGet 4.0中引入PackageReference之前的旧系统.

您可能偶尔会将其project.lock.json视为构建过程的工件,但应该忽略它.管理.NET标准/ .NET核心项目所依赖的NuGet包应始终由其中之一完成

  • .csproj直接编辑文件
  • 使用dotnet CLI(dotnet add package等)
  • 如果您使用的是Visual Studio,请使用Package Manager GUI

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

在包恢复过程(dotnet restore)期间,NuGet必须分析项目中的依赖项,遍历它们的依赖图,并找出应该为项目和项目的依赖项安装哪些软件包.

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

  • 另请参阅:[NuGet Docs:Project.json参考](https://docs.nuget.org/ndocs/schema/project.json) (3认同)