何时包含/复制第三方代码,而不是引用/链接它?

Jør*_*ode 5 .net open-source reference

我正在开发一个.NET库项目,其中包含一系列可以由服务使用的接口,我也在创建它.该服务的用户将提供来自库的接口的实现,然后将其注入到服务应用程序中.

我的图书馆依赖于第三方图书馆,我当然需要参考.我的库中的一个接口使用方法签名中的第三方类型.这意味着,此特定接口的实现者还需要引用第三方库.我担心的是,这会增加摩擦力,分散用户的注意力,无法完成她真正想做的工作 - 实现该界面.

此问题的一个解决方案是包含来自第三方库构建的源文件,而不是其作为单独的程序集引用.我知道这可能会让我有点难以在将来将更新集成到第三方代码中,但除此之外,我有什么理由不考虑这个选项吗?您何时包含第三方代码而不是引用它?

注意:有问题的第三方库非常小(少于10个类,总共1500个SLOC),并且它作为我的项目(Apache License 2.0)在开源许可下可用.

Jon*_*eet 4

非常不愿意将源代码包含在您自己的项目中。是的,您的用户需要添加另一个引用......但这意味着他们知道它来自哪里。也许他们会想在其他地方使用它 - 也许他们甚至会使用具有相同第三方库的另一个项目。您不希望最终得到同一类型的多个副本。

此外,将其保留为单独的库将使第三方库发生更改时的更新变得更加容易。

有些项目明确为您提供了库的“单个源文件”版本,以便轻松嵌入到项目中。(例如, linqbridge就是这样做的。)这会有所改变 - 在这一点上,我认为如果您愿意的话,包含它会更合理。但对于“正常”项目,我只需添加参考。