什么是project.lock.json?

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

dotnet new dotnet restore 

第二个语句创build了包含大量垃圾(不是真的垃圾,而是大量依赖,configuration等)的project.lock.json 。 我假设这些依赖是.NET框架,分解成单独的NuGet包。

我的问题:

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

简单的答案: project.lock.json是由.NET工具生成的,当你恢复项目的包。 你不应该触摸它或检查它到源代码pipe理。 直接编辑project.json

更长的答案:在包恢复过程中(networkingdotnet restore ),NuGet必须分析项目中的依赖关系,走他们的依赖关系图,找出应该为项目安装哪些包以及项目的依赖关系。

这是一个不重要的工作,所以结果被caching在project.lock.json以使得后续的恢复更快,更高效。 如果修改了project.json ,并且再次执行了dotnet restore ,locking文件将被重新生成。

在我们的团队中,当有人更新一些nuget时,我们遇到同样的问题,lock.json文件不会被更新,甚至在运行dotnet恢复的时候,在应用最后的select(删除它们)之前,我build议运行grunt从你的命令行。 如果不行,删除所有的lock.json文件并运行dotnet恢复 ,这是我最喜欢的select;)