代码之家  ›  专栏  ›  技术社区  ›  anon

在哪里存储外部DLL文件?

  •  51
  • anon  · 技术社区  · 14 年前

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

    但是我应该在哪里保存DLL文件呢?它们是从文件系统中的路径引用的,但是如果我能将其包含到项目中,那就更好了。但是怎么做呢?

    8 回复  |  直到 12 年前
        1
  •  64
  •   Peter Mortensen icecrime    12 年前

    我就是这么做的:

    • 创建 图书馆 解决方案级别的文件夹
    • 下载并复制我所有的第三方DLL文件到那里
    • 来自lib文件夹的引用
    • 将所有这些DLL文件放入 源代码管理 . 我在用 Subversion ,我手动添加,但这是一次性的。

    也可以添加解决方案文件夹并将其添加到其中。


    更新2012-12-19

    上面的答案是什么时候 NuGet 在婴儿期。FWIW,我的方法是我们有NuGet项:

    1. 对纯DLL文件依赖项执行上述操作(如果它们没有NuGet pkg)
    2. 为解决方案启用“包还原”
    3. 改变 packages.config 如果需要将版本锁定到特定包,请使用文件
    4. 不要将包本身存储在版本控制系统中(将忽略设置为 Git , Mercurial 等)

    实际上,我使用NuGet来管理甚至是内部依赖项,并且有一个私有feed。

        2
  •  9
  •   Peter Mortensen icecrime    12 年前

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

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

    trunk 文件夹包含我正在处理的源的副本。另外,还有一个目录'lib',它包含我的项目引用的所有第三方程序集。
    (我参考了那个位置的组件)。

    “releases”文件夹包含主干的分支。例如,当v1发布时,会从主干中获取一个分支,这样我就有了一份源代码的副本,以及构建应用程序版本1所需的所有依赖项。(这对于错误修复非常方便。修复该分支中的错误,将修复合并到主干,重新构建该分支,您的应用程序就有了一个固定的v1)。

    所有这些都进入源代码管理。(是的,引用的程序集也是)。通过这样做,如果另一个同事也必须在这个项目上工作,那是非常容易的。他只是从源代码管理获得最新版本,他(或她)已经准备好了一切,以便能够编译和构建。

    (请注意,如果您使用 CruiseControl 对于 continuous integration ).

        3
  •  4
  •   Dean Chalk    14 年前

    在Visual Studio的“属性”窗口中,有一个名为“复制本地”的属性,将其设置为true,它们将被复制到本地项目的bin目录中

        4
  •  4
  •   Leniel Maccaferri    13 年前

    看一看 NuGet (Visual Studio的包管理器)。。。

    裸体 是一个Visual Studio扩展,它使安装和 更新Visual Studio中的开源库和工具。

    然后阅读这个NuGet文档 德拉克鲁姆酒店 :

    Using NuGet without committing packages to source control

        5
  •  4
  •   Peter Mortensen icecrime    12 年前

    你应该看看 NuGet . 它是Visual Studio 2010的一个包管理扩展,专为您的需要而设计。

        6
  •  2
  •   abhilash    14 年前

    一定要看看 Tree Surgeon -为.NET项目创建一个开发树,这可能是一个很好的起点,从那里您可以即兴创作。

        7
  •  1
  •   Jonathon Bolster    14 年前

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

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

        8
  •  1
  •   Nobody    14 年前

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

    环境:

    • 这是构建解决方案所需的所有工具和库。
    • 环境中的事物应该保持相当稳定。
    • 环境中的内容通常是版本控制的,您应该能够同时拥有多个版本。
    • 环境中的东西通常都有许可证。
    • 环境不受源代码管理。
    • Visual Studio就是一个很好的例子。

    工作集:

    • 这基本上是你的源代码。
    • 这是获得最终可执行文件所需的所有需求。
    • 你认为在开发过程中工作环境会发生很大变化。
    • 工作集应该受源代码管理。

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