在哪里存储外部DLL文件?

时间:2010-11-25 13:23:41

标签: c# .net wpf visual-studio dll

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

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

8 个答案:

答案 0 :(得分:63)

这就是我的所作所为:

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

您还可以添加解决方案文件夹并将其添加到那里。


更新2012-12-19

上面的答案是NuGet处于起步阶段。 FWIW,我的方法,我们有NuGet项目:

  1. 如上所述,执行普通的DLL文件依赖项(它们没有NuGet pkg)
  2. 为解决方案启用“程序包还原”
  3. 如果需要,请将packages.config文件更改为将版本锁定到特定包
  4. 不要将软件包本身存储在版本控制系统中(对GitMercurial等设置忽略。)
  5. 我实际上使用NuGet来管理内部依赖项并拥有私有源。

答案 1 :(得分:9)

通常,我的项目结构看起来像这样(至少):

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

trunk文件夹包含我正在处理的源代码副本。此外,还有一个目录“lib”,其中包含我的项目引用的所有第三方程序集 (我在那个位置引用装配)。

'releases'文件夹包含trunk的分支。例如,当v1被释放时,会对trunk进行分支,这样我就可以获得构建应用程序版本1所需的源代码及其所有依赖项的副本。 (这对于错误修正很方便。修复该分支中的错误,将修复程序合并到主干,重建该分支,并且你的应用程序有一个固定的v1。)

所有这些都进入了源代码控制。 (是的,引用的程序集也是如此)。通过这样做,如果另一位同事也必须参与该项目,那将非常容易。他只是从源代码控制中获取最新版本,并且他(或她)拥有一切就绪,以便能够编译和构建。)

(请注意,如果您对CruiseControl使用continuous integration之类的内容,也是如此。

答案 2 :(得分:4)

你应该看看NuGet。它是Visual Studio 2010的软件包管理扩展,专为您的需求而设计。

答案 3 :(得分:4)

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

答案 4 :(得分:4)

查看NuGet(Visual Studio的包管理器)......

  

NuGet 是一个Visual Studio扩展,使其易于安装和   在Visual Studio中更新开源库和工具。

然后阅读这个NuGet文档以获得crèmedelacrème

Using NuGet without committing packages to source control

答案 5 :(得分:2)

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

答案 6 :(得分:1)

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

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

答案 7 :(得分:1)

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

<强>环境:

  • 这是构建解决方案所需的所有工具和库。
  • 预计环境中的事物将保持合理的恒定。
  • 环境中的东西通常是版本化的,你应该能够并排放置多个版本。
  • 环境中的事物通常是许可的。
  • 环境不受源代码管制。
  • 一个很好的例子是Visual Studio。

工作集:

  • 这基本上就是您的源代码。
  • 获取最终可执行文件需要满足所有要求。
  • 你希望工作组在开发过程中有很大的改变。
  • 工作集应受源代码控制。

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