多年来我在一些项目中注意到了这种模式,最近一次是在RavenDB中。
在ILSpy中打开Raven.Abstractions.dll,我注意到ol“ProjectName.SomeScope.Newtonsoft”
为什么这样做?看看github中的源代码,我猜他们正在为Newtonsoft提供源代码并使用Foddy将Newtonsoft类型编织到Raven程序集中。
我只能猜测这是为了防止类型冲突:所以Raven.Abstractions.Dll可以有一个特定版本的Newtonsoft,而不会强迫你(作为消费者)也引用该版本。
还有其他想法吗?
答案 0 :(得分:2)
当时的原因是它与使用不同且有时不兼容的json.net版本的其他项目产生了很多冲突。 拥有我们自己的版本意味着我们可以避免所有这些。