7

我一直想知道在引用第 3 方程序集时有哪些最佳做法。前段时间我问了一个问题“依赖和引用:我到底应该引用什么“并收到了一些要考虑的事情,但我并不完全相信。我有一个构建我的项目所需的第 3 方程序集,根据我目前所读到的内容,我应该只引用构建我的项目所需的程序集。这留下了问题第 3 方程序集的运行时依赖项。如果我也引用它们,那么引用列表会变得很大(因为有几个依赖项)并且包含很多程序集,我不知道做什么,并且与我的项目实际上无关。另外我想避免在其中任何一个中使用公共方法,而只使用主要的第 3 方大会。我怎样才能以一种体面的方式做到这一点?感谢任何帮助,因为我很困惑。

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

谢谢。

4

3 回答 3

3

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

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

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

于 2008-11-20T11:12:06.593 回答
2

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

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

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

于 2008-11-20T11:26:32.337 回答
1

您还可以使用NDepend来准确了解和控制您从层库中使用的内容。我写了一篇关于这个控制库的使用的文章

于 2008-11-21T09:23:24.643 回答