我有以下场景,项目 A 引用 A1 和 A2 DLL。Proj A 是一个库项目,包含一些常见的数据相关功能,可以在所有应用程序中使用。解决方案 X 中的项目 B 和解决方案 Y 中的项目 C 依赖于项目 A 来使用其与数据相关的功能。现在我有以下选择。
选项1:
在解决方案 X 和 Y 中添加项目 A 并让各自解决方案中的项目 B 和 C 将项目 A 添加为“项目引用”,这将复制 A.dll、A1.dll 和 A2.dll 到 bin 文件夹中自动项目 B 和 C。
优点:
- 如果我在 Proj A 中更改任何内容,它将自动反映在 Proj B 和 C 中。
- 正如我所提到的,它不仅会复制 A.dll,还会复制 Proj B 和 Proj C 的 bin 文件夹中的 A1.dll 和 A2.dll。
缺点:
- 如果我更改 Proj A 的位置,那么我需要在解决方案中修复这个问题,并且需要构建所有使用 Proj A 作为项目参考的解决方案。
选项 2:
创建一个单独的中央解决方案,其中包括所有公共库项目。创建一个项目 CommonLib 将所有库项目作为项目引用添加到该项目中,以便 CommonLib 将 Proj A 引用为项目引用。这会将 A.dll 、 A1.dll 和 A2.dll 复制到 CommonLib 项目的 bin 文件夹中。现在解决方案 X 和 Y 中的项目 B 和 C 需要从项目 CommonLib 的 bin 文件夹中引用 A.dll。
优点:
- 项目 A 位置的更改不会影响 Sol X 和 Y 的修复,因为您只需要在 CommnLib 解决方案这一单一位置进行修复。
缺点:
- 如果你从 commonlib bin 文件夹中引用 A.dll,在项目 B 中,它不会自动复制项目 B 的 bin 文件夹中的 A1.dll 和 A2.dll。所以你永远不会知道项目 A 的所有 DLL 是什么是依赖的。
为什么当我从 CommonLib 项目的 bin 文件夹中引用 A.dll 时,不包括 A1.dll 和 A2.dll ?对此的任何解决方案。
[注意:我不想使用 GAC]