【发布时间】:2014-12-17 11:47:23
【问题描述】:
我们的解决方案有一个“Lib”文件夹,其中包含存储在源代码管理中的 DLL(“A.dll”)。
我的项目如下所示(简化):
Website
- References
- * Reference to A.dll from Lib folder below *
- Content
- Lib
- A.dll (Build Action: Content, Copy to Output: Do not copy)
- B.dll (Build Action: Content, Copy to Output: Do not copy)
- Migrations
- Views
A 引用/使用了 B,但 B 未作为引用包含在网站内。
当我点击编译时,Visual Studio 将 B 放入 bin 文件夹中,它是如何知道要这样做的?即使我将 B 留在原处,但不让网站项目看到它(不包含在项目中),它仍然放在 bin 文件夹中。
但是,如果我将 B 放在 Migrations 文件夹中,它不会被复制到 bin 文件夹中。 Lib 和 Migrations 文件夹没有针对它们的特殊属性(我可以看到)。
这是如何工作的,是否记录在案?
【问题讨论】:
-
.NET 程序集的元数据包含依赖程序集的条目。 Msbuild 读取它以确定它们是否也需要被复制。因此它认为 B 是 A 的依赖项。如果找到该文件,则将其复制。如果不是,则它静默跳过副本。
-
它是如何知道在 Lib 文件夹中查找的?只是恰好是 A 放置的位置,而不是 A 最初编译到的位置。
-
来自您添加的参考。 A 引用的
<HintPath>属性指向 Lib 文件夹。 -
就是这样找到A的,难道只是用A的hintpath找到B吗?
-
它在找到 A 的同一目录中查找。
标签: c# visual-studio-2013 compilation dll-reference