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

.net 何时包括/复制第三方代码,而不是引用/链接它?,.net,open-source,reference,.net,Open Source,Reference,我正在从事一个.NET库项目,其中包含一系列可以由服务使用的接口,我也在创建这些接口。服务的用户将从库中提供接口的实现,然后将这些接口注入到服务应用程序中 我的图书馆依赖于第三方图书馆,我当然需要参考。我的库中的一个接口在其方法签名中使用来自第三方的类型。这意味着,这个特定接口的实现者还需要引用第三方库。我担心的是,这会增加摩擦,分散用户的注意力,让他们无法完成她真正想做的工作——实现该界面 这个问题的一个解决方案是包含来自第三方库构建的源文件,而不是将其作为单独的程序集引用。我知道,这可能会使

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

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

这个问题的一个解决方案是包含来自第三方库构建的源文件,而不是将其作为单独的程序集引用。我知道,这可能会使我更难将更新整合到第三方代码中,但除此之外,还有什么原因让我不认为这是一种选择?什么时候包含第三方代码而不是引用它

注意:讨论中的第三方库非常小(不到10个类,总共1500个SLOC),它作为我的项目(Apache许可证2.0)在开源许可证下可用。

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

此外,将其作为一个单独的库保存,将使其在第三方库更改时更易于更新


有一些项目明确地为您提供了库的“单一源文件”版本,以便于嵌入到项目中。(例如,确实如此。)这在某种程度上改变了一些事情——在这一点上,我认为如果你愿意的话,将其包括在内更为合理。但是对于“普通”项目,我只会添加引用。

在您的情况下,我会添加引用,而不是源

我不认为添加源代码有什么好处。正如您正确指出的,集成更新将更加困难。此外,对于更新,您需要重建

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