【问题标题】:Nuget: ranges vs. specific versions in packages.lock.json dependenciesNuget:packages.lock.json 依赖项中的范围与特定版本
【发布时间】:2022-11-10 17:47:09
【问题描述】:

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

dependencies: {
  ...
  "MQTTnet": "3.0.15",
  ...
}

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

dependencies: {
  "MQTTnet": "[3.0.15, )",
  ...
}

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

我怎样才能理解为什么会发生这些变化以及是什么导致了这些变化?

【问题讨论】:

    标签: .net-core nuget


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2013-07-31
      • 1970-01-01
      • 2020-03-05
      • 2019-12-25
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 2016-04-17
      • 2011-06-20
      相关资源
      最近更新 更多