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

时间:2013-08-07 08:59:04

标签: visual-studio-2010 nuget-package

即使版本号未更改,如何启用更新?

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

如何在版本号保持不变的情况下完成此操作?

2 个答案:

答案 0 :(得分:0)

恢复这一点,因为我们在同一条船上(将单片解决方案转换为Nuget-ified微服务架构)。这种方法虽然有点单调乏味,但仍然有效:

转到NuGet选项并单击“清除所有NuGet缓存” 在解决方案上执行Nuget包还原。如果由于(例如,Newtonsoft.json'正在被另一个进程使用')而最终失败,则关闭Visual Studio的所有实例。在MSBuild.exe + VBCSCompiler.exe的所有实例上结束任务。重新启动VS,它应该可以工作。

请注意,删除并重新添加程序包将无法正常工作,因为它仍将使用旧的缓存版本。

答案 1 :(得分:0)

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

通常,我们使用AssemblyInformationalVersion字段指定预发行后缀e。 g。:

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

在NuGet软件包管理器中启用预发行版本时,也会提供这些软件包。只要后缀表达式“增加”,程序包管理器就将后续的预发行版本视为更新。因此,重要的是先考虑周全的后缀,例如e。 G。以下内容将不起作用:beta9> beta10beta9被视为较高,因为第五个字符较高)。

删除后缀后,该软件包即被视为发行版,并作为对同一版本的所有预发行版软件包的更新提供。

但是随着生活在与我们赌博,有时我们会在刚刚发布的库中发现一个小错误或改进。再次增加这种微更改的版本号总是很烦人,如果刚刚发布的库甚至没有在任何地方使用,则导致其发布仅在几分钟前。

在这种情况下,我尝试了Simon Storr概述的过程,但这还不够。我在解决方案的packages目录中遇到了旧版本。从那里手动删除它之后,它从某个地方取出了当前软件包。 我不确定是在这一步下载了当前软件包,还是从解决方案的父目录中的更全局的软件包目录中获取了该软件包。

请注意,有多个软件包目录! 项目的Visual Studio引用视图中的NuGet包的属性仅显示全局包目录。但是已经有了新版本(已通过ILSpy进行了检查),而仍然将旧版本复制到bin目录中。