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

在PackageReference中运行update-package时如何限制包版本升级?

在PackageReference体系中实现固定包版本的方法

嘿,这个问题我太有共鸣了!当初从packages.config切换到PackageReference的时候,我也找了好久对应的版本锁定方式。其实核心逻辑很类似,只是配置的位置变了——PackageReference把版本约束直接整合到了Version属性里,不需要单独的allowedVersions了。

要实现和<package id="Newtonsoft.Json" version="10.0.3" allowedVersions="[10.0.3]" />完全一样的效果(也就是彻底固定版本,运行Update-Package时不会更新这个包),有两种等价的写法:

  • 写法一:直接指定精确版本号
    这是最直观的方式,直接把Version设为你要锁定的具体版本:

    <PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
    

    这样NuGet会严格使用这个版本,无论是Update-Package命令还是Visual Studio的NuGet包管理器,都不会给这个包推送更新。

  • 写法二:使用精确版本范围语法
    如果你想更明确地表达“只能使用这个特定版本”,可以沿用packages.config里的方括号范围语法,把Version设为[10.0.3]:

    <PackageReference Include="Newtonsoft.Json" Version="[10.0.3]" />
    

    这个语法的意思是“版本必须精确等于10.0.3”,和第一种写法效果完全一致,只是更强调版本约束的精确性。

另外补充个小细节:和packages.config不同,PackageReference的版本约束是直接生效的,不需要额外配置。如果之后你想解除锁定,只要把Version改成浮动范围(比如10.x)或者移除版本限制就行。

内容的提问来源于stack exchange,提问作者Dav Evans

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:27:39