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

5
我正在开发一个.NET库项目,它包含一组接口,可以被一个服务所使用,我也在创建这个服务。服务的用户会提供库中接口的实现,然后将其注入到服务应用程序中。
我的库依赖于第三方库,我当然需要引用它。我的库中有一个接口,在其方法签名中使用了第三方库的类型。这意味着,这个特定接口的实现者也需要引用第三方库。我的担忧是,这增加了摩擦,让用户分心于她真正该做的工作——实现那个接口。
解决此问题的一个方法是包含第三方库构建的源文件,而不是将其作为单独的程序集引用。我知道这可能会使我将来整合第三方代码更新变得有些困难,但除此之外,是否有任何理由我不应该考虑这个选项?什么情况下要包含第三方代码而不是引用它?
注:所涉及的第三方库相当小(不到10个类,总共1500行代码),并且按照我项目的开放源代码许可证(Apache License 2.0)提供。
2个回答

4

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

此外,将其作为一个单独的库保留将使其更容易随第三方库的更改而更新。

有一些项目明确为您提供“单个源文件”版本的库,以便轻松嵌入到项目中。(例如,linqbridge。)那会改变事情 - 在那一点上,如果您想要,我认为包含它是更合理的。但对于“正常”的项目,我只会添加引用。


0
在你的情况下,我肯定会添加引用而不是源代码。
我认为添加源代码没有好处。正如你所说,它将更难集成更新。另外,如果要进行更新,您需要重新构建。
我的建议是:添加引用,并在接口定义的注释中指出获取库和使用它的原因。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接