【问题标题】:.dll's are missing after rebuild/clean-build solution重建/清理构建解决方案后缺少 .dll
【发布时间】:2014-09-24 14:15:57
【问题描述】:

我的解决方案中有 3 个项目和一堆第 3 方或公司 dll。每次我重建我的项目或清理解决方案时,很多这个 dll 都会被删除,因此丢失了。重建后一次又一次地引用这个 dll 文件是很烦人的。有人可以解释如何避免这种情况吗?提前致谢。

【问题讨论】:

  • 你已经在你的项目中“引用”了它们,但它们仍然丢失了吗?或者您只是将 dll 文件复制到输出目录?
  • 在参考的属性菜单(在设计器中)中,它们是否具有“本地复制”(如果未设置,这可能是它们不在文件夹中的原因)
  • @Habib 我在根文件夹中创建了 bin 文件夹,并将所有 dll 复制到那里,然后通过引用-添加引用从该文件夹中引用它们。
  • @ShukhratRaimov,您项目的根文件夹中应该已经有一个 bin 文件夹
  • @Habib 哦,对不起它以前在那里,但它没有我的 dll 文件。我的每个项目也都有 bin 文件夹,但我从我的根 bin 添加了引用 dll。我很困惑为什么有这么多 bin 文件夹,以及这些引用是如何创建的,以及为什么它们在每次重建后都被处理掉。

标签: c# asp.net dll


【解决方案1】:

bin 文件夹只是构建的二进制输出,因此当您清理解决方案时,bin 文件夹中的所有程序集都会被删除。您应该从其他位置引用程序集。一个建议是在您的项目中创建一个Shared Resources 文件夹,将您的程序集复制到该文件夹​​,然后从该文件夹中引用它们。这样它们就不会在清理/重建时从bin 中删除,Visual Studio 会根据需要将它们复制到那里。

  1. 右键单击项目中的References 文件夹并选择Add Reference...
  2. 使用浏览功能定位您要引用的程序集(不必担心手动将它们复制到您的bin 文件夹或从您的bin 文件夹复制)
  3. 添加参考后,右键单击参考列表中的参考并选择Properties
  4. 确保Copy Local 属性设置为True

这将确保在每次构建时将程序集复制到您的 bin 文件夹。

【讨论】:

  • 感谢您的回答。所以实际上当我清理/重建我的子项目时,这个子项目中的 bin 文件夹将被清空。如果我重建整个解决方案,那么根目录中的bin文件夹会被删除还是子项目中的每个bin文件夹都被清空?
  • 清理项目时,bin 文件夹会为该项目清空。解决方案级别没有bin 文件夹,因此当您清理解决方案时,它将清空该解决方案中所有项目的bin 文件夹。我认为 Visual Studio 有一些特殊规则,用于在执行清理时删除哪些文件/文件夹,因此之后可能会有剩余文件。但重要的是 bin 文件夹是构建的输出,您不想从那里手动复制/引用您的程序集...
【解决方案2】:

就我而言,.net 框架版本是问题所在。我不得不将其版本降低到 4.5,然后项目才能正确构建并能够在其他项目中引用

【讨论】:

    【解决方案3】:

    正如 Troy 在他的回答中解释的那样,确实是对 *.dll 文件的引用,该文件保存在 bin 文件夹之外,确保 dll 文件在清理项目时不会被彻底清除.

    但是,仅仅添加对程序集的引用可能还不够。例如,对于某些其他文件类型,例如 *.pdb 文件以及 *.resources.dll 文件(它们通常分布在许多以语言代码命名的子文件夹中),它将不起作用 (2个字母的语言代码)

    为了用真实的情况来描述这个问题,我选择了一个程序集,它的源代码要么已经消失,要么不再兼容,等等。我选择(故意...)一个 13 岁的 AjaxControlToolkit,由许多组件文件。下图说明了它的组成。每次对项目应用“清理”命令时,所有这些文件都会被删除,除了引用的程序集。此外,在本例中,拥有多个同名的 *.resources.dll 文件程序集,即使不可能,也很不方便从同一项目中为每个文件添加“引用”。

    尽管如此,这里有一个非常简单的解决方法

    1. 将此文件层次结构保存在单独的文件夹中(正如 Troy 在他的回答中解释的那样)
    2. 只需使用在项目的 Pre-build 事件中输入的命令行将它们复制到 bin 文件夹中,例如 xcopy "$(SolutionDir)AjaxControlToolkit" "$(TargetDir)" /y /i /s /r /q

    希望对某人有用...


    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-06
      • 2017-12-30
      • 2013-08-15
      • 2011-12-24
      • 2015-10-20
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多