为什么项目将 Newtonsoft 嵌入到它们的命名空间中?

Why do projects embed Newtonsoft into their namespace?

多年来,我在一些项目中注意到了这种模式,最近一次是在 RavenDB 中。

在 ILSpy 中打开 Raven.Abstractions.dll,我注意到 ol "ProjectName.SomeScope.Newtonsoft"

为什么要这样做??查看 github 中的源代码,我猜他们正在拉取 Newtonsoft 的源代码并使用 Foddy 将 Newtonsoft 类型编织到 Raven 程序集中。

我只能猜测这样做是为了防止类型冲突:因此 Raven.Abstractions.Dll 可以拥有特定版本的 Newtonsoft,而无需强制要求您(作为消费者)也引用该版本。

还有其他想法吗?

当时的原因是它与其他使用不同且有时不兼容的 json.net 版本的项目产生了很多冲突。 拥有我们自己的版本意味着我们可以避免所有这些。