PackageReference 版本被忽略

PackageReference version is ignored

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

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

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

First issue: I tested using where there was no 1.2.3. My understanding is it should use the next available version, but now it simply says the selected package is 1.2.3, with "Not available in this source".

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

因此 PackageReference 将不会根据当前缓存中最接近的可用版本引用包,并选择最新版本,无论它是否存在于您的本地机器下。

Second issue, that falls in with the first, is to specify to only use -pr* or -rc* versions. 1.2.-pr is not a valid option, so maybe our numbering scheme needs changing.

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

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

相反,您可以使用

1.2.*-*

外,1.2.*-beta1也是非法的。尽管它在 Dependencies UI 下显示了一个版本,但您无法在 Nuget Package Manager--> 下找到它Installed表示包丢失,项目丢失

另外还有可以参考