如何强制包管理器使用相同的版本更新Nuget包?

8

即使版本号没有改变,如何启用更新?

我正在开发一个Nuget包。我们目前处于早期阶段,测试版/测试中。在测试完成之前,我们不更改版本号,但我们希望将更改后的包传递给测试人员进行测试。 但是包管理器不能看到更改,也不能允许更新,除非版本已更改,我可以重新安装,但我更希望测试人员能够进行更新。

那么,在版本号保持不变的情况下,如何实现这一点呢?

2个回答

4

我们正在将一个单体解决方案转换为Nuget化的微服务架构,因此需要重新启用此方法。虽然这种方法有点繁琐,但它是有效的:

进入NuGet选项并点击“清除所有NuGet缓存”。 对解决方案进行NuGet包还原操作。如果由于某些原因(例如Newtonsoft.json被“另一个进程使用”)而失败,请关闭所有Visual Studio实例并结束所有MSBuild.exe + VBCSCompiler.exe实例的任务。重新启动VS,然后它应该可以正常工作。

请注意,删除和重新添加软件包将无法解决问题,因为它仍将使用旧的缓存版本。


1

我刚遇到了同样的问题,我的搜索将我带到了这里。

通常我们使用AssemblyInformationalVersion字段来指定预发布后缀,例如:

  • 0.9.5-beta00001
  • 0.9.5-beta00002
  • ...

当在NuGet包管理器中启用预发布版本时,这些包也会被提供。只要后缀表达式“增加”,包管理器就将后续的预发布版本视为更新。因此,从一个经过深思熟虑的后缀开始非常重要,例如以下内容将不起作用:beta9 > beta10beta9更高,因为第五个字符更高)。

一旦去掉后缀,该软件包将被视为发布,将作为更新提供给所有相同版本的预发布软件包。

但是,生活有时会与我们玩弄,有时我们会在刚刚发布的库中识别出一个小错误或改进。如果甚至没有在任何地方使用刚刚发布的库,因为它的发布仅在几分钟前,对于这样的微小更改再次增加版本号总是非常令人恼火。

对于这个问题,我尝试了Simon Storr概述的过程,但这并不足够。我在我们解决方案的packages目录中遇到了旧版本。在手动从那里删除它之后,它从某个地方获取了当前包。 我不确定它是否在此步骤中下载了当前包,还是从位于解决方案父目录中的更全局的packages目录中获取了它。
请注意,有多个packages目录! 在Visual Studio项目的引用视图中,NuGet包的属性仅显示全局packages目录。但已经有新版本了(使用ILSpy进行了检查),而旧版本仍然复制到了bin目录中。

1
请注意,前导零解决方法仅适用于NuGet 4.3.0之前的版本。对于更新的NuGet,您可以使用类似“1.0.0-beta.23”的表示法。在此处查看更多信息:https://learn.microsoft.com/en-us/nuget/create-packages/prerelease-packages - ezolotko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接