什么时候应该更新项目的NuGet包?

16

我知道NuGet包的更新过程不是自动的,有很好的原因(新版本可能会破坏你的代码或导致意想不到的问题),但是它把更新所有包的责任转移到了开发者身上。对于给定的项目,我们应该在什么时候更新NuGet包?这个过程是否有一些指导方针?

在我们当前的项目中,更新包更多地是随意的:我只有在记得检查更新时才更新包,并且最好在冲刺开始时这样做,以便如果有较新版本的问题,我们能够修复它们或回滚到前一个版本的有问题的包。大部分时间,我是唯一一个担心这些事情的开发者,但我觉得尽可能保持最新状态非常有价值,因为这可以提高性能并且新功能可以使我们的工作更加容易。


1
好问题。我记得有一个插件开发者说过,你只应该在需要时更新,比如修复错误或添加新功能。但这似乎并不是一个全面的策略。 - James John McGuire 'Jahmic'
@Jahmic:同意。那个开发者可能采取“不破坏它就不修复它”的策略,但是他必须准备好最终陷入技术债务。他可能会落后于重要的安全更新几个版本,因此实施这个更新变得更加复杂,并且需要处理潜在的巨大QA /测试工作量。至少在给定版本的NuGet不再维护之前,应该已经进行了到维护版本的更新。 - Vering
2个回答

15

嗯,只要您能够应对,就应该及时更新。

因此,如果您的应用程序已经在生产中,更新软件包可能会导致回归问题,或者需要进行额外的测试以验证一切是否按预期工作。

通常,更新到较新的次要版本不应该会引起太多问题,但总会存在风险。查看新版本的发布说明可以让您准备好更新所需的内容。

总之,在您可以应对的情况下更新,并且如果系统突然发生回归而测试人员甚至不知道这是怎么回事,则需要接受任何来自测试人员的批评 :)


10
好的回答!此外,我建议你拥有一个干净的工作副本(所有更改都已提交或创建新分支)。这样,如果更新导致任何问题,你总是可以还原回之前的版本。版本控制万岁! - Kiliman
3
同意这里的答案。此外还要记住不及时更新NuGet包可能会产生风险。根据您使用的包的数量和复杂性,如果从未更新,则可能会面临技术债务。例如,不久前,Xamarin.Forms NuGet 4.5包含对已弃用的iOS组件的引用,并且苹果宣布拒绝包含此弃用组件的新版本。在Xamarin.Forms 4.6中,该引用已被删除,因此解决了弃用问题。 - Vering

1

决定软件包更新策略的几个提示:

  • 不要在已经废弃(不再维护)的软件包版本上运行生产应用。如果无法升级到最新版本,请至少升级到维护的版本。
  • 不要在预发布(不稳定)的软件包版本上运行生产应用。请升级到稳定的维护版本。
  • 在主要版本升级时,请阅读出版商的发行说明,了解从应用程序上下文中向后兼容的影响。这将有助于更好地估计开发和测试工作量。

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