proget nuget 服务器中是不是有设置使其考虑版本 1.0.1.0 = 1.0.1
Posted
技术标签:
【中文标题】proget nuget 服务器中是不是有设置使其考虑版本 1.0.1.0 = 1.0.1【英文标题】:Is there a setting in proget nuget server to make it consider version 1.0.1.0 = 1.0.1proget nuget 服务器中是否有设置使其考虑版本 1.0.1.0 = 1.0.1 【发布时间】:2020-11-11 07:06:33 【问题描述】:proget nuget 服务器中是否有任何设置可以使其处理版本1.0.1.0
= 1.0.1
所以基本上当尝试恢复任何版本的包时,它将返回1.0.1.0
版本的包。
因为我的项目中有一个版本为1.0.1.0
的包,但每当我尝试恢复它时,它总是会尝试查找1.0.1
,跳过最后一个零,因此会抛出包不存在的错误。因为proget服务器有1.0.1.0
版本。
当我在 Visual Studio 中使用本地文件夹作为 nuget 源时,它可以工作。因为它从本地文件夹恢复版本1.0.1.0
,因为它似乎以某种方式对待本地文件夹1.0.1.0
= 1.0.1
有什么想法吗?
【问题讨论】:
请先尝试clean nuget caches或删除C:\Users\xxx\.nuget\packages
下的所有文件
您使用了旧的 nuget cli v 3.3.0 来打包 1.0.1.0 包。从 nuget cli v3.4.4 开始,vs 和 nuget 将忽略第四个节点,如果它为零。见this document。但是,当你在 proget 上上传包时,它仍然会保留第四个节点。于是出现错误
你好,这个问题有更新吗?
【参考方案1】:
proget nuget 服务器中是否有设置使其考虑版本 1.0.1.0 = 1.0.1
ProGet nuget 服务器没有选项让它考虑版本1.0.1.0
= 1.0.1
。
我认为这个包是由旧的 nuget cli <=v 3.3.0
打包的。并且由于 nuget v3.4.4
,nuget 将自动删除第四个节点,如果它是零。
如果你安装你的包版本1.0.1.0
,最新的VS和nuget会忽略包版本的第四个零节点。见this official Microsoft document。
因此,如果您从本地源或nuget.org
安装它,在这些源上,它将从源路径中删除最后一个零。
然而,在ProGet服务器(第三方nuget服务器而非Microsoft)上,仍然保留包版本的第四个零节点.所以当你在VS上安装这个包时,它会在packages.config
文件中显示版本1.0.1.0
,当你恢复它时,它会找到版本1.0.1
,因为nuget的新规则。
而且实际上,当您启用 ProGet 包源时,它仍然可以找到版本1.0.1.0
。在我这边,虽然它仍然显示版本 1.0.1.0
并且 vs 必须在恢复过程中捕获 1.0.1
,但该项目仍然可以正常运行。
所以我怀疑你和我的环境之间存在一些偏差。
这是我的测试过程:
举个例子
这是我的包裹:
在VS中,显示版本1.0.1
。
但是,在 ProGet nuget 服务器上,它显示版本1.0.1.0
。
建议
首先,先尝试clean nuget caches或者删除C:\Users\xxx\.nuget\packages
下的所有文件。
然后启用proget nuget服务器包源,记得检查一下:
=============================================
如果您仍然遇到错误,您可以按照以下步骤操作:
作为一个建议,您可以将您的包上传到 nuget.org,它会自动将您的包剔除到版本 1.0.1
,然后它会同步到 ProGet nuget 服务器。
当我在nuget.org
上上传版本1.0.1.0
时,它显示版本1.0.1
:
【讨论】:
以上是关于proget nuget 服务器中是不是有设置使其考虑版本 1.0.1.0 = 1.0.1的主要内容,如果未能解决你的问题,请参考以下文章
从 CI 到生产 Nuget 源的 Nuget 包版本控制和推广