2017-04-18 49 views
-2

多年来,我在几个项目中注意到了这种模式,最近在RavenDB中也注意到了这种模式。在ILSpy为什么项目将Newtonsoft嵌入其名称空间?

开幕Raven.Abstractions.dll,我注意到OL “ProjectName.SomeScope.Newtonsoft”

enter image description here

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

我只能猜测这是为了防止类型冲突:所以Raven.Abstractions.Dll可​​以有一个特定版本的Newtonsoft而不会强加你(作为消费者)也参考该版本。

还有其他想法吗?

+0

您是否使用任何转换器进行转换? –

+0

他们这样做,所以你不必包括牛顿软件的另一个依赖。而已。他们没有编织任何东西。只需将组装在一起。您可以使用ILMerge轻松完成此任务。请参阅https://www.microsoft.com/en-us/research/people/mbarnett/ – Amy

回答

2

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

相关问题