【问题标题】:Why create a folder in your project to hold dlls you're referencing anyway?为什么要在您的项目中创建一个文件夹来保存您正在引用的 dll?
【发布时间】:2010-06-30 12:30:23
【问题描述】:

我正在一个 ASP.NET 网站项目中安装 N2 内容管理框架。

http://n2cms.com/Documentation/Content-enabling%20an%20existing%20site/The%20first%20content%20class.aspx 的说明建议我创建一个 lib 文件夹来保存所需的 dll。下一步要求我引用那些相同的 dll - 这可能会将它们添加到 bin 文件夹中!因此,我的项目将包含 dll 的重复副本。

谁能说明为什么提出这个建议?

谢谢

大卫

【问题讨论】:

    标签: visual-studio dll reference project


    【解决方案1】:

    该项目将不包含重复项。 bin 文件夹是输出的位置,但它不被视为您实际项目的一部分,也不会被检入源代码管理。

    通过将 DLL 放置在 lib 文件夹中,可以更轻松地与应用程序的源代码一起分发它们,并确保任何其他人获得您的代码副本,无论是您将其发送给他们还是他们从源代码中获取它控件,具有运行应用程序所需的 DLL。它还确保它们使用与您创建软件时使用的相同版本的组件。如果 DLL 需要许可,则情况可能不同,因为任何想要编译项目的人都需要在其工作站上安装 DLL 的许可组件。

    基本上,我看到的主要好处是它将您的代码使用的所有组件保持在同一个地方,使您的项目成为一个完整的单元。

    【讨论】:

    • 那么,如果将dll添加到项目中的文件夹中,然后引用它,它不会复制到bin中?
    • 它仍然被复制到Bin。但是,当您将代码提交到源代码管理或将其分发给其他人时,通常不会包含 bin 文件夹。 Bin 文件夹是一个输出文件夹。虽然项目编译时项目最终位于 bin 文件夹中,但您不应直接从 bin 文件夹中引用任何内容,因为它是易失性的,并且经常被 VS 编译器覆盖。
    【解决方案2】:

    如果您将 DLL 添加到 bin 文件夹中,那么有一天您决定清理您的项目,它们会消失...所以最好将您的参考 DLL 保留在 bin 文件夹之外。

    实际上,有很多方法可以从 bin 文件夹中意外删除 DLL。只需将 bin 文件夹视为一个临时位置,其内容可以随时刷新。

    在构建过程中,所有相关文件都将复制到 bin 文件夹,包括配置文件、标记为复制到输出文件夹的内容文件,当然还有标记为 Copy Local 的任何引用的 DLL。

    如果重复位置困扰您,您可以将 DLL 保存在另一个文件夹中,只需将包含文件夹路径添加到当前 AppDomain 的 PrivateBinPath,这将确保它们在不需要 Copy Local 属性的情况下被加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      相关资源
      最近更新 更多