在哪里存储外部DLL文件?

在我的项目中,我使用了一些第三方库。 我使用Visual Studio中的引用文件夹包含它们。

但是我应该在哪里保存DLL文件? 它们是从文件系统中的一个path引用的,但如果可以将它包含到项目中将会很好。 但是,如何?

这就是我所做的:

  • 在解决scheme级别创build一个lib文件夹
  • 下载并将所有我的第三方DLL文件复制到那里
  • 从lib文件夹引用
  • 将所有这些DLL文件放在源代码pipe理中 。 我使用Subversion ,我手动添加它们,但这是一次性的。

您也可以添加解决scheme文件夹并将其添加到那里。


更新2012-12-19

上面的答案是当NuGet在婴儿期。 FWIW,我们的方法,我们有NuGet项目:

  1. 按照上面的方法处理普通的DLL文件依赖关系(它们没有NuGet pkg)
  2. 为解决scheme启用“包恢复”
  3. 如果需要更改packages.config文件,将版本locking到特定的包
  4. 不要将包本身存储在版本控制系统中(对Git , Mercurial等设置忽略)

我实际上使用NuGet来pipe理内部的依赖关系,并有一个私人的饲料。

通常,我的项目结构如下(至less):

 projectname - trunk - src - lib - support - docs - releases 

trunk文件夹包含我正在工作的源的副本。 此外,还有一个“lib”目录,其中包含我的项目引用的所有第三方程序集。
(我参考了那个位置的组件)。

“发行”文件夹包含中继线的分支。 例如,当v1被释放时,一个分支就被占用了,这样我就得到了源代码的副本以及构build应用程序版本1所需的所有依赖。 (这对bug修复很方便,修复了那个分支中的错误,将修复合并到了trunk中,重build了这个分支,并且你有一个固定的v1应用程序)。

所有这些东西都进入了源代码pipe理。 (是的,也是引用的程序集)。 通过这样做,如果另一个同事也需要进行项目工作,这是非常容易的。 他只是从源代码控制中获得最新版本,并且他(或她)拥有一切以便能够编译和构build)。

(请注意,如果您使用CruiseControl进行持续集成 ,则也是如此)。

看看NuGet (Visual Studio包pipe理器)…

NuGet是一个Visual Studio扩展,可以方便地在Visual Studio中安装和更新开源库和工具。

然后阅读这个NuGet文档,以得到最好的奶油

使用NuGet而不提交包到源代码pipe理

你应该看看NuGet 。 这是Visual Studio 2010的一个包pipe理扩展,正是为了你想要的而devise的。

在用于引用dll的Visual Studio的属性窗口中,有一个名为“Copy Local”的属性 – 将其设置为true,并将它们复制到本地项目的bin目录中

看看树外科医生 – 为.NET项目创build一个开发树,这可以是一个很好的起点,从那里你可以即兴创作。

就我个人而言,我在第三方DLL的源代码控制中有一个文件夹(每个公司和组织都有一个文件夹),并从那里引用它们。

这些文件可供下载源代码的所有开发人员使用,并且可以轻松更新。

要正确回答这个问题,你需要区分环境工作集

环境:

  • 这是构build解决scheme所需的所有工具和库。
  • 预计环境中的事物会保持合理不变。
  • 环境中的东西通常是版本化的,你应该可以并排多个版本。
  • 环境中的东西通常是被许可的。
  • 环境不受源代码控制。
  • 一个很好的例子是Visual Studio。

工作集:

  • 这基本上是你的源代码。
  • 这是达到最终可执行文件所需的全部要求。
  • 你希望在开发过程中工作集会发生很大的变化。
  • 工作集应受源代码控制。

您需要决定组件适合哪个类别。