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

时间:2010-10-09 19:58:13

标签: c# .net visual-studio

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

7 个答案:

答案 0 :(得分:14)

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

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

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

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

答案 1 :(得分:11)

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

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

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

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

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

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

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

答案 6 :(得分:1)

我对地点没有严格的规定。但是,我会鼓励一致性

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