NuGet 4.6.2中*通配符的含义及PackageReference版本配置解析
嘿,我来给你理清楚NuGet 4.6.2里*通配符的具体含义,还有你配置的那个PackageReference里的*到底是啥意思~
NuGet 4.6.2中
*通配符的一般含义 在NuGet的不同使用场景里,*通配符的作用不太一样:
- 包名搜索场景:当你在NuGet包管理器或者命令行里搜索包时,
*代表匹配任意长度的任意字符(包括空字符)。比如搜Autofa*,会找到Autofac、Autofac.Extensions.DependencyInjection这类以Autofa开头的包;搜*fac则会匹配所有以fac结尾的包。 - 版本范围场景:这也是你第二个问题涉及的核心,在版本号里使用
*时,它是版本范围通配符的一种,用来匹配特定规则的版本。
在
<PackageReference>的Version节点中*的具体意义 当你在PackageReference里写<Version>*</Version>时,在NuGet 4.6.2中,这个*的意思是自动匹配该包的最新稳定版本。
举个实际例子:假设Autofac当前的稳定版本是4.9.4,那配置了这个之后,NuGet在还原包的时候会自动拉取4.9.4;如果之后Autofac发布了5.0.0的稳定版,下次执行还原操作(比如dotnet restore)时,NuGet就会自动升级到这个最新的稳定版本——当然,前提是你没有手动锁定版本或者设置其他版本限制。
要注意的是,这个*只会匹配稳定版,如果该包只有预发布版本(比如带-beta、-rc后缀的),除非你在配置里额外开启了允许使用预发布版本的设置,否则NuGet会找不到匹配的版本而报错。
内容的提问来源于stack exchange,提问作者user656822
相关产品推荐
相关产品推荐

