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

时间:2010-01-15 09:00:48

标签: .net open-source reference

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

此外,将其保存为单独的库将使得在第三方库更改时更容易更新。

一些项目明确地为您提供了库的“单源文件”版本,以便于在项目中嵌入。 (例如,linqbridge确实如此。)这会改变一些事情 - 在这一点上,我认为如果你想要包含它更合理。但对于“正常”项目,我只是添加参考。

答案 1 :(得分:0)

在你的情况下,我肯定会添加引用,而不是源代码。

我没有看到添加源代码的好处。正如您所说,集成更新将更加困难。此外,对于更新,您需要来重建。

我的建议:添加引用,只需在界面定义中添加注释,获取库的位置以及使用它的原因。