我在项目中添加了一个版本为1.0.1.0
的软件包,但是每当我尝试恢复该软件包时,nuget都会尝试忽略最后一个零(即修订号)来寻找1.0.1
软件包?
为什么这样做?并且有什么办法可以让nuget在还原时寻找确切和完整版本的软件包?
答案 0 :(得分:0)
包装版本为normalized,位于 pack 和 restore 上。
版本号第四部分的零将被省略
NuGet现在使用semantic versioning,它为版本号指定了固定格式。
特定版本号的格式为Major.Minor.Patch [-Suffix]
前三个部分是必需的,后缀是可选的。
- 主要:重大更改
- 次要功能:新功能,但向后兼容
- 补丁:仅向后兼容的错误修复
- -后缀(可选):连字符和后跟表示预发行版本的字符串[...]
这与您习惯的.NET assembly versioning方案不同。由于此版本控制方案与NuGet的语义版本控制不兼容,因此根据您的工具所实现的NuGet版本,最后一个数字将被省略,如上所述。
例如,在Visual Studio 2019中,如果您有多个版本1.0.1.0
,1.0.1.1
,1.0.1.42
,它们都将被列出,您可以安装特定版本。但是,尾随修订版本号为0
时将被忽略,即使您构建自己的程序包也不会附加。
对于已经构建的软件包,此规范化不会影响软件包本身中的版本号。它只影响解决依赖关系时NuGet与版本匹配的方式。
因此,如果仅消费包而不能更改它,则忽略它。但是,如果您自己构建软件包,则应切换到语义版本控制,并将构建和修订版本号合并为单个Patch
号,或者如果仅用于预发行版本,则使用诸如1.0.1-pre1
之类的后缀包。