引用第三方程序集的最佳实践

时间:2008-11-20 10:38:21

标签: .net dependencies

我一直想知道在引用第三方程序集时最佳做法是什么。不久前我问了一个问题“Dependencies and references: what exactly should I reference”并收到了一些值得思考的问题,但我并不完全相信。我有一个第三方程序集需要构建我的项目,根据我到目前为止所读到的,我应该只引用构建我的项目所需的程序集。这留下了第三方程序集的运行时依赖性问题。如果我引用那些引用列表也会变得很大(因为有几个依赖项)并且包含很多程序集,我不知道什么做了,哪些与我的项目无关。此外,我想避免在任何这些中使用公共方法,只使用主要的第三方程序集。我怎样才能以体面的方式做到这一点? 任何帮助都表示赞赏,因为我很困惑。

为了让我知道我在这里处理的是第三方库使用hibernate和log4net以及办公室互操作程序集。

感谢。

3 个答案:

答案 0 :(得分:3)

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

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

如果您不知道依赖项,可以使用Dependency Walker

答案 1 :(得分:2)

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

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

不确定这是否是一个很好的解决方案,但到目前为止一直在为我工作。

答案 2 :(得分:1)

您还可以使用NDepend来了解和控制您从层库中使用的内容。我写了一篇关于这个Controlling the usage of libraries

的文章