.net 引用第三方程序集的最佳做法

.net 引用第三方程序集的最佳做法,.net,dependencies,.net,Dependencies,我一直在想,当涉及到引用第三方程序集时,什么是最佳实践。不久前,我问了一个问题“”并得到了一些想法,但我并不完全相信。我有一个第三方程序集需要建立我的项目,根据我到目前为止阅读的内容,我应该只参考建立我的项目所需的程序集。这就留下了第三方程序集的运行时依赖性问题。如果我也引用了这些引用,那么引用列表将变得非常庞大(因为存在多个依赖项),并且包含许多程序集,我不知道该做什么,实际上与我的项目无关。此外,我希望避免在任何这些方法中使用公共方法,而只使用主第三方程序集。我怎样才能体面地做这件事呢? 非

我一直在想,当涉及到引用第三方程序集时,什么是最佳实践。不久前,我问了一个问题“”并得到了一些想法,但我并不完全相信。我有一个第三方程序集需要建立我的项目,根据我到目前为止阅读的内容,我应该只参考建立我的项目所需的程序集。这就留下了第三方程序集的运行时依赖性问题。如果我也引用了这些引用,那么引用列表将变得非常庞大(因为存在多个依赖项),并且包含许多程序集,我不知道该做什么,实际上与我的项目无关。此外,我希望避免在任何这些方法中使用公共方法,而只使用主第三方程序集。我怎样才能体面地做这件事呢? 非常感谢您的帮助,因为我很困惑

为了让大家了解我在这里讨论的内容,第三方库使用hibernate和log4net以及office互操作程序集


谢谢。

如果我必须处理未在GAC注册的库,我将使用以下方法:

  • 创建一个包含所有第三方库及其依赖项的文件夹“Libs”
  • 参考我需要的
  • 创建生成后操作,将“Libs”文件夹中的所有文件复制到“bin/debug”(或release)文件夹

如果您不知道依赖关系,可以使用。

我在许多(C#)项目中使用的替代方法是:

  • 在解决方案目录中创建一个“Bin”文件夹(与项目目录级别相同)
  • 使所有项目的输出../Bin而不是Bin/debug或Bin/release
  • 根据项目的不同,放入任何不是内置“Bin”结果的文件,包括库依赖项、某些数据文件或其他文件
  • “Bin”的内容也会转到源代码管理(当然没有构建输出)
  • 项目直接引用的任何库都会转到“References”或“Libs”文件夹(有时我也尝试将它们放入Bin,但在这种情况下,在将引用添加到项目时,您需要记住禁用将引用复制到output dir,这在大型项目中会变得单调乏味)

我不确定这是否是一个好的解决方案,但到目前为止,它一直对我有效。

您还可以使用它来准确地了解和控制您从tiers library中使用的内容。我写了一篇关于这方面的文章

您如何处理共享库?假设您有3个属于同一解决方案的项目,并且它们共享库。然后在其中一个库中使用第三方库(以及依赖项)。是否每个项目都有lib文件夹,每个项目都有libs副本?这个“libs”文件夹是否意味着每个项目目录中都有libs文件夹?只有1个“libs”。解决方案文件夹| | Libs | | Project1 | | | Project2 | | | Project3 | | bin Project1、Project2和Project3都引用“解决方案文件夹\Libs”中的同一个库。我就是这样做的,但您不需要后期生成操作,只需设置“复制本地”在引用的属性上设置为true。您还需要引用的库所依赖的库。