在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
相关产品推荐
相关产品推荐

