7

How can Update be enabled even though the version number has not changed?

I'm developing a Nuget package. We're in the early stages, beta/testing. We don't change the version until testing is complete but we want to pass on the changed package for testing purposes. But the Package Manager does not see the change, allow Update, unless the version has changed, I can reinstall but I'd prefer the testers to be able to Update.

How can this be done while the version number stays the same?

4

2 回答 2

4

恢复这一点,因为我们在同一条船上(将整体解决方案转换为 Nuget 化的微服务架构)。此方法有效,但有点乏味:

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

请注意,删除和重新添加包将不起作用,因为它仍将使用旧的缓存版本。

于 2018-05-08T11:38:00.983 回答
1

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

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

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

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

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

但随着生活与我们一起赌博,有时我们会在刚刚发布的库中发现一个小错误或改进。如果刚刚发布的库甚至没有在任何地方使用,那么再次增加版本号总是很烦人,因为它的发布只是几分钟前。

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

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

于 2019-03-14T13:47:49.863 回答