依赖项版本冲突

问题描述 投票:0回答:1

我今天有一个理论问题。如果我在一个解决方案中的许多项目中具有相同的依赖项,但它们处于不同的版本中,会发生什么情况?是否会在未来造成问题?是否有可能,该程序会因为某些边缘情况而崩溃(使用旧依赖项中不可用的某些方法或其他方法)?或者也许 .NET 以某种方式处理它并且使用不同版本是 100% 安全的?

假设我有

App.sln
和 2 个项目 -
Presentation.csproj
Infrastructure.csproj

我在 9.01 版本中将 Newtonsoft.Json 添加到

Presentation.csproj
,但几个月后,我也将 Newtonsoft.Json 添加到
Infrastructure.csproj
,但现在在版本 13.0.3 中(再也没有更新过其中任何一个) .

是的,我知道由于漏洞而不保持最新状态是不好的,而且我知道最好的方法是将每个地方更新到相同的最新版本,但这不是我的问题

c# .net
1个回答
0
投票

您可能想阅读 John Skeets 有关版本控制的文章

当我在一个解决方案中的许多项目中具有相同的依赖项,但它们处于不同的版本时,会发生什么?

其中一个项目将无法加载依赖项,因为版本不匹配,或者它将加载库的一个版本(通常是最新的)并将其用于两个项目。

它会在未来造成问题吗?是否有可能,该程序会因为某些边缘情况而崩溃(使用旧依赖项中不可用的某些方法或其他方法)?

是的,这可能会导致问题。如果使用语义版本控制,您应该能够假设次要版本是向后兼容的。但随着主要版本的更改,很可能至少有一些可能导致问题的重大更改。

或者也许 .NET 以某种方式处理它并且使用不同版本是 100% 安全的?

没有什么是 100% 安全的。您始终需要测试您的应用程序。

如果您控制所有项目,解决方案非常简单,只需更新所有库以使用相同版本,并使用自动化测试来帮助确保更新不会破坏任何内容。

对于第三方项目,情况会更加困难,所有潜在的解决方案都会有一些权衡,请参阅链接文章了解更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.