visual-studio - PackageReference 版本被忽略
问题描述
在我们的项目中,我们为不同的分支创建不同的 NuGet 包(使用后缀)。在 .csproj 文件中,我试图指定应该使用的包的特定版本。包名称可以是1.2.3
、1.2.3-rc001
或1.2.3-pr001
。
第一个问题:
我
<PackageReference Include="Package.Name" Version="[1.2.3,1.2.6)" />
在没有 1.2.3 的地方进行了测试。我的理解是它应该使用下一个可用版本,但现在它只是说选择的包是 1.2.3,带有"Not available in this source"。更新 NuGet 也会忽略这一点,而只是更新到最新版本 1.2.10。之后,它会覆盖 .csproj 中的版本,因此会丢失指定的边界。
第二个问题,属于第一个问题,是指定仅使用 -pr* 或 -rc* 版本。1.2.*-pr*
不是一个有效的选项,所以也许我们的编号方案需要改变。
解决方案
第一个问题:我在没有 1.2.3 的地方进行了测试。我的理解是它应该使用下一个可用版本,但现在它只是说所选包是 1.2.3,并带有“此源中不可用”。
实际上,当您通过浮动版本(在您的情况下1.2.3<=version<1.2.6
)设置不同版本的 nuget 包时,NuGet会选择最接近应用程序的包并忽略其他包。因此1.2.3
,无论它是否存在于您当前的 nuget 缓存中,它都会进行选择。请参阅此文档。
所以PackageReference不会根据你当前缓存中最接近的可用版本来引用包,并选择最新版本,不管它是否在你的本地机器下存在。
第二个问题,属于第一个问题,是指定仅使用 -pr* 或 -rc* 版本。1.2. -pr不是一个有效的选项,所以也许我们的编号方案需要改变。
目前,预发布版本不能与浮动版本一起使用。这意味着您不能将任何预发布角色与浮动版本一起使用。所以-pr*
和-rc*
是非法的,包括1.2.*-pr*
.
在使用过程中,不会出现关于预发布版本的字符。
相反,您可以使用
1.2.*-*
此外,这1.2.*-beta1
也是非法的。虽然它在Dependencies UI下显示了一个版本,但在Nuget Package Manager --> Installed下找不到它,这意味着该包丢失并且项目丢失了它。
此外,还有一个类似的问题,您可以参考。
推荐阅读
- c++ - 适用于 C++ 的 AWS 开发工具包使用 SES 发送模板化电子邮件
- c++ - 元组索引的模板参数推导
- react-native - 使用 reat-native-maps 时如何关闭键盘?
- java - 用户单击弹出窗口中的按钮后,如何在主活动中添加新按钮?
- javascript - 如何通过 panzoom 以编程方式平滑缩放到一个点?
- javascript - Javascript拼接最后一个元素
- python - 如何在 CMD 上使用 pip 安装 Kivy
- python - 参数标志,不使用时为空,不使用时为默认值
- excel - 从变体类型转换为 IRR 双精度类型数组
- python - 为什么 Sklearn 中的 GridSearchCV 没有选择最好的 R 平方值?