我正在处理一个.NET库项目,其中包含一组接口,这些接口可以被服务使用,我也正在创建这些接口。服务的用户将从库中提供接口的实现,然后将这些接口注入服务应用程序。
我的图书馆依赖第三方图书馆,我当然需要参考。我的库中的一个接口在其方法签名中使用来自第三方的类型。这意味着,这个特定接口的实现者也需要引用第三方库.我担心的是,这会增加摩擦,分散用户的注意力,使其无法完成自己真正想做的工作--实现该界面。
解决此问题的一个解决方案是包含来自第三方库构建的源文件,而不是将其作为单独的程序集引用。我知道这可能会使我在将来更难集成第三方代码的更新,但除此之外,有什么理由我不应该认为这是一种选择?什么时候包含第三方代码而不是引用它?
注意:所讨论的第三方库相当小(少于10个类,总共1500 SLOC),它是在开放源码许可下作为我的项目(Apache 2.0)提供的。
发布于 2010-01-15 09:06:29
我非常不愿意将源代码包含在您自己的项目中。是的,你的用户需要添加另一个引用.但这意味着他们知道它从哪里来。也许他们会想要在其他地方使用它--也许他们甚至会使用同一个第三方库的另一个项目。您不希望以同一类型的多个副本结束。
此外,将其保持为单独的库将使其在第三方库更改时更容易更新。
有一些项目显式地为您提供了一个库的“单一源文件”版本,从而使其易于嵌入到项目中。(例如,林格桥确实如此。)这在一定程度上改变了事情--我认为如果你愿意的话,把它包括进来更合理。但对于“正常”项目,我只需添加参考。
发布于 2010-01-15 10:38:46
在您的例子中,我将明确地添加引用,而不是源。
我看不出添加源代码有什么好处。正如您正确地指出的,集成更新将更加困难。另外,对于更新,您需要重新构建。
My建议:添加引用,只需在接口定义中添加注释,从哪里获取库,以及使用它的原因。
https://stackoverflow.com/questions/2070413
复制相似问题