我按照instruction创建了新的.NET Core项目,并从cmd运行以下代码:

dotnet new
dotnet restore

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

我的问题:

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

推荐答案

Update:project.json已替换为.csproj,作为项目的主要文件.NET标准项目.这个问题指的是PackageReference in NuGet 4.0年前的旧制度.

您可能偶尔仍会将project.lock.json视为构建过程中的一个工件,但应该忽略它.管理您需要的NuGet软件包.NET标准/.NET核心项目所依赖的任何一方

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

Old answer留给后代:project.lock.json是由.NET工具来恢复项目的包.你不应该碰它或者把它判断进源代码管理.直接编辑project.json.

在包恢复过程中(dotnet restore),NuGet必须分析项目中的依赖关系,遍历their个依赖关系图,并计算出应该为您的项目和项目的依赖关系安装哪些包.

这不是一项微不足道的工作量,因此结果以project.lock.json为单位进行缓存,以使后续恢复更快、更高效.如果修改project.json并再次执行dotnet restore,将重新生成锁文件.

.net相关问答推荐

升级到.NET8后,SignalR(在坞站容器上)网关损坏

EGC / 文本元素上的 .NET String.Split

System.IO.Directory.Exists 在 LINQ 语句中失败,但在 foreach 循环中没有

如何在 C# 中创建表达式树来表示String.Contains("term")?

异步总是 WaitingForActivation

抛出 ArgumentNullException

简单委托(委托)与多播委托

序列化私有成员数据

获取类型的默认构造函数的最有效方法

DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") 返回上午时间而不是下午时间?

如何比较 C# 中的(目录)路径?

C#中的T是什么意思?

如何使用 c# 仅获取目录中的文件名?

当我们按下 Enter 键时启动的 WPF 文本框命令

如何从 XDocument 获取 Xml 作为字符串?

如何确定字符串是 C# 中的有效 IPv4 还是 IPv6 地址?

.NET Framework SDK 和 Targeting 包有什么区别

如何防止任务的同步延续?

在 Windows 窗体 C# 应用程序中拥有配置文件的最简单方法

WPF 中的 Application.DoEvents() 在哪里?