Nuget:packages.lock.json 依赖项中的范围与特定版本

lan*_*oxx 6 nuget .net-core

我有一个 dotnet 项目,已packages.lock.json提交到我的 Nuget 存储库中。提交的版本有一个依赖属性,如下所示:

dependencies: {
  ...
  "MQTTnet": "3.0.15",
  ...
}
Run Code Online (Sandbox Code Playgroud)

当我使用 Rider IDE(来自 Jetbrains)打开项目时,Nuget 似乎在后台自动运行,并将版本更改为使用此范围语法:

dependencies: {
  "MQTTnet": "[3.0.15, )",
  ...
}
Run Code Online (Sandbox Code Playgroud)

当我检查锁定文件时,我可以看到某些版本正在使用范围,而其他版本似乎使用特定版本。我想避免锁定文件中的随机更改,除非我明确决定更新我的包依赖项,并且当我更新时,我希望对何时使用范围与特定版本有更多的控制。

我如何理解这些变化发生的原因以及导致这些变化的原因?

jer*_*one 1

这是我对这些变化的理解:

这些版本符合 SemVer(就像 NPM 包一样)。指定三位数字(用点连接)被视为精确版本。

然而,新格式使用版本范围;它被称为包容性最小值。作为最终用户(而不是库作者),这不是我们想要的。但是,因为所有三个数字都在那里,所以这是一个精确的版本。

因此,像这样的“普通版本”1.2.3被视为版本范围,相当于[1.2.3 , )https://github.com/renovatebot/renovate/issues/6610#issuecomment-651259846

为什么现在会发生这种情况,我还没有找到。我怀疑 NuGet 强制使用这种新格式来支持版本范围。

更多信息请参见:https ://learn.microsoft.com/en-us/nuget/concepts/package-versioning