【问题标题】:PackageReference version is ignoredPackageReference 版本被忽略
【发布时间】:2020-10-15 16:56:00
【问题描述】:

在我们的项目中,我们为不同的分支创建不同的 NuGet 包(使用后缀)。在 .csproj 文件中,我试图指定应该使用的包的特定版本。 包名称可以是1.2.31.2.3-rc0011.2.3-pr001

第一期: 我在没有 1.2.3 的情况下使用
<PackageReference Include="Package.Name" Version="[1.2.3,1.2.6)" /> 进行了测试。我的理解是它应该使用下一个可用版本,但现在它只是说选择的包是 1.2.3,“此源中不可用”。更新 NuGet 也会忽略这一点,而只是更新到最新版本 1.2.10。之后它会覆盖 .csproj 中的版本,因此会丢失指定的边界。

第二个问题,属于第一个问题,是指定仅使用 -pr* 或 -rc* 版本。 1.2.*-pr* 不是一个有效的选项,所以我们的编号方案可能需要更改。

【问题讨论】:

    标签: visual-studio nuget nuget-package csproj packagereference


    【解决方案1】:

    第一个问题:我在没有 1.2.3 的地方进行了测试。我的理解 是否应该使用下一个可用版本,但现在它只是说 选择的包是 1.2.3,带有“Not available in this source”。

    其实,当您通过浮动版本设置不同版本的nuget包时(在您的情况下,1.2.3<=version<1.2.6),NuGet会选择最接近应用程序的包并忽略其他人。所以它会选择1.2.3,不管它是否存在于你当前的nuget缓存中。See this document

    所以 PackageReference 不会根据您当前缓存中最接近的可用版本来引用该包,而是选择最新版本,无论它是否存在于您的本地计算机下。

    与第一个问题相同的第二个问题是指定仅使用 -pr* 或 -rc* 版本。 1.2.-pr 不是一个有效的选项,所以也许我们的编号方案需要改变。

    目前,预发布版本不能与浮动版本一起使用。这意味着您不能将任何预发布字符与浮动版本一起使用。所以-pr*-rc*是非法的,包括1.2.*-pr*

    在使用过程中,不能出现预发布版本的字符。

    相反,您可以使用

    1.2.*-*
    

    此外1.2.*-beta1 也是非法的。虽然它在 Dependencies UI 下显示了一个版本,但您在 Nuget Package Manager-->Installed 下找不到它,这意味着该包丢失并且项目丢失了它。

    另外还有a similar issue可以参考。

    【讨论】:

      猜你喜欢
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 2020-03-30
      • 2021-12-19
      相关资源
      最近更新 更多