You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NuGet指定9.9.5.*版本范围时如何修复NU1604警告并取最高修订版

NU1604警告修复与版本规则说明

单版本写法能否修复警告?

不存在仅通过单段版本号写法同时满足“自动匹配9.9.5前缀最高修订版”和“消除NU1604警告”的可行方案:

  • 纯固定单版本号写法(比如9.9.5.0)没有浮动选取能力,无法自动拉取同前缀下的最新修订版,不符合你的需求
  • 带通配符的单段浮动写法(比如你现在用的9.9.5.*)仅隐含“选取最高匹配版本”的逻辑,没有明确标注可接受的最低版本边界,这正是触发NU1604的核心原因——这种写法依然会被NuGet判定为“缺少包容性下界”,警告不会消失。

区间写法[9.9.5,9.9.6)的语义验证

你对这个区间的理解完全正确:

该区间的实际匹配范围和你原本9.9.5.*的预期需求完全一致:

  • 左侧方括号代表闭区间,包含下界9.9.5(NuGet会自动将缺失的版本段补0,等价于包含9.9.5.0)
  • 右侧圆括号代表开区间,不包含上界9.9.6
  • 实际覆盖范围就是所有以9.9.5.为前缀的版本,从9.9.5.0到可观测到的最高9.9.5.xxxx修订版,不会纳入9.9.4.x、9.9.6.x等不符合前缀要求的版本

适配现有Directory.Build.props写法的调整方案

你原本把版本定义为MSBuild属性、再在PackageReference里引用的写法本身不会对NuGet解析逻辑产生影响——NuGet还原时会先将MSBuild属性替换为实际版本字符串,再按标准规则解析。只需要小幅调整属性值即可同时满足需求:

  • 把原来<MyVersion>9.9.5.*</MyVersion>的定义,修改为<MyVersion>[9.9.5,9.9.6)</MyVersion>
  • 调整后NuGet依然会在区间范围内自动选取符合要求的最高修订版,同时因为明确标注了包容性下界和版本排除范围,NU1604警告会直接消除,所有版本约束逻辑和你最初的预期完全一致。

内容的提问来源于stack exchange,提问作者Rand Random

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 01:15:03