在哪里存储外部DLL文件?
在我的项目中,我使用了一些第三方库。 我使用Visual Studio中的引用文件夹包含它们。
但是我应该在哪里保存DLL文件? 它们是从文件系统中的一个path引用的,但如果可以将它包含到项目中将会很好。 但是,如何?
这就是我所做的:
- 在解决scheme级别创build一个lib文件夹
- 下载并将所有我的第三方DLL文件复制到那里
- 从lib文件夹引用
- 将所有这些DLL文件放在源代码pipe理中 。 我使用Subversion ,我手动添加它们,但这是一次性的。
您也可以添加解决scheme文件夹并将其添加到那里。
更新2012-12-19
上面的答案是当NuGet在婴儿期。 FWIW,我们的方法,我们有NuGet项目:
- 按照上面的方法处理普通的DLL文件依赖关系(它们没有NuGet pkg)
- 为解决scheme启用“包恢复”
- 如果需要更改
packages.config
文件,将版本locking到特定的包 - 不要将包本身存储在版本控制系统中(对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。
工作集:
- 这基本上是你的源代码。
- 这是达到最终可执行文件所需的全部要求。
- 你希望在开发过程中工作集会发生很大的变化。
- 工作集应受源代码控制。
您需要决定组件适合哪个类别。