你把第三方图书馆放在哪里?

我有一堆.dll程序集,例如HtmlAgilityPackMoreLinq 。 我应该把这些文件放在哪里? 我经常把它们放在我的Projects文件夹中的某个地方,但后来我总是在为它们挖掘。 是否有标准的地方放置它们?

没有标准的地方可以放置它们,但请确保:

  • 把它们放在一个地方
  • 将它们包含在源代码管理中。

我将所有必需的dll放在我的解决方案“Dependencies”中的顶级目录中,与项目文件夹并行。 我将它们放在源代码控制中,这样当新的开发人员查看解决方案时,它就会全部编译并正常工作。 这是唯一的出路。

我只包含绝对需要的.dll文件。 这样可以保持轻便,这很好,但是当我找到MVC Contrib的其他部分或我需要的任何部分时,我必须找到解压缩的目录,甚至可能不在我的计算机上! 其他人将整个库目录(readme.txt和all)作为其源代码控制的一部分链接到解决方案。 这可以确保您和未来的开发人员拥有他们需要的一切,但增加了一点点自重。 要么是一个好策略。

将“Lib”文件夹与源项目放在同一级别是一种常见的方式。

说实话,这不是我的项目所依赖的依赖项,我发现很难管理,它是依赖项所依赖的依赖项。 我想提一下NHibernate,Castle Windsor以及各种Castle Windsor设施。 在我的上一个项目中让所有这些人一起玩,花了我很多时间。

对于开源项目,我也喜欢使用源代码,因为有时它对调试源代码很有用。 (有时因为文档很差,你必须阅读源代码以了解它是如何工作的)。 我已经看到VS项目安排,以便项目同时引用DLL,VS知道在哪里找到源代码,因为我写的我不太记得如何做到这一点。

因此,DLL的Lib文件夹对我有用; 我经常称它为“共享依赖”。

至于开源源代码,我没有标准的版本方式,因为每个项目的结构不同,并且具有不同的构建过程。 我不喜欢修改开源项目结构或构建方法,因为那时我负责它。 如果由于某种原因,它不会构建,或构建不正确,或产生错误的DLL,原因将非常难以追查,我必须深入解决所有我不关心的所有所有。

在解决方案目录下的文件夹中,例如“外部”或“库”。 这样,您的持续集成系统(或其他团队成员)可以从源控制系统中提取一个根并获得所需的一切。

在SVN中,使用svn:externals从不同的根目录中提取该目录,以便您可以在解决方案之间轻松共享库DLLS(和库项目)。

在办公室,我们在网络上有一个共享参与组件的共享。 这些可以是我们自己的第三方或集合,可以在项目之间共享。

我也是,不喜欢将dll文件放在源代码管理中的想法。 如果所有开发人员都可以访问共享,那么一切都会正常工作。

My Documents的visual studio目录似乎是放置它们的合理位置。 我不知道它是最好还是有什么问题,但至少所有的库都在一个地方找到。

 %USERPROFILE%\My Documents\Visual Studio XXXX\Libraries 

在我的公司,我们将所有共享DLL程序集放在名为Assemblies的文件夹中的网络驱动器上。 从那里,我们使用SyncToy镜像该文件夹和本地开发机器上的文件夹之间的更改(在我的情况下C:\ Assemblies与子文件夹,用于不同版本或有用的第三方程序集)。 使用Visual Studio项目的“参考路径”function,可以非常轻松地仅根据位置选择不同的assembly版本。

对于家里的项目,我肯定会采用Jeff M提到的将它们放在My Documents下的Visual Studio文件夹中的想法。

我对该位置没有严格的规定。 但是, 我会鼓励一致性

例如,我需要为此创建一个我正在为客户端编写的小工具,所以我检查了他们在Bitbucket中的其他代码库,它似乎在解决方案文件夹中使用了依赖项文件夹(与其他项目一起),所以我复制了那个。