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 包版本控制和推广

Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台

ProGet 不从 Drop Path 导入 npm 包

nuget 包无法在 VS 2019 中下载

ProGet 上传本地工件

托管您自己的 NuGet 和符号源服务器?