添加对DLL的引用不会复制Visual Studio中bin文件夹中的所有相关DLL

时间:2012-07-31 06:33:36

标签: .net .net-assembly

我有以下场景,项目A正在引用A1和A2 DLL。 Proj A是一个库项目,包含一些常见的数据相关功能,可以在所有应用程序中使用。解决方案X中的项目B和解决方案Y中的项目C依赖于项目A来使用其数据相关功能。现在我有以下选项。

选项1:

在解决方案X和Y中添加项目A并让各个解决方案中的项目B和C将项目A添加为“项目参考”,这将复制A.dll,A1.dll和A2.dll项目B和C的bin文件夹自动生成。

优点:

  1. 如果我在Proj A中更改任何内容,它将自动反映在Proj B和C中。
  2. 正如我所提到的,它不仅会复制A.dll,还会复制Proj B和Proj C的bin文件夹中的A1.dll和A2.dll。
  3. 缺点:

    1. 如果我改变了Proj A的位置,那么我需要在解决方案中解决这个问题,并且需要构建所有使用Proj A作为项目参考的解决方案。
    2. 选项2:

      创建一个单独的中央解决方案,其中包括所有公共库项目。创建项目CommonLib将所有库项目添加为项目Reference,以便CommonLib将Proj A作为项目引用引用。这会将A.dll,A1.dll和A2.dll复制到CommonLib项目的bin文件夹中。现在解决方案X和Y中的项目B和C需要从项目CommonLib的bin文件夹中引用A.dll。

      优点:

      1. 更改proj A的位置不会影响Sol X和Y的修复,因为您只需要修复一个CommnLib解决方案。
      2. 缺点:

        1. 如果您从commonlib bin文件夹中引用A.dll,在proj B中,则它不会自动复制proj B的bin文件夹中的A1.dll和A2.dll。所以你永远不会知道什么是全部DLL proj A依赖于。
        2. 为什么当我从CommonLib项目的bin文件夹中引用A.dll时,不包括A1.dll和A2.dll?任何解决方案。

          [注意:我不想使用GAC]

1 个答案:

答案 0 :(得分:0)

选项1是最佳选择2不是最佳