【发布时间】:2014-01-26 15:37:48
【问题描述】:
对于这个不太清楚的标题,我很抱歉。
我在 Visual Studio (2010) 中遇到了一个奇怪的行为。
假设我的解决方案中有三个项目:A、B 和 C。
A has a reference on B
B has a reference on C
C has a reference on an assembly (log4net.dll)
全部配置为Copy Local True。
我负责项目 A,另外两个开发人员负责项目 B 和 C。
项目 B 在其一个类中使用了驻留在项目 C 中的多个(静态)方法。我正在使用 B 中的其他类,它们没有使用 C 中的任何东西。
当我构建解决方案时(项目A配置为主项目),我希望在项目A的输出文件夹中看到C的结果及其引用的程序集。实际发生的是C的结果被复制了到 B 的输出文件夹,但在 A 的输出文件夹中不存在。
我花了一些时间才弄清楚这是因为 A 没有使用 C 中的任何东西(直接或间接)。
所以问题是:它是 Visual Studio 的内置优化功能还是我做错了什么?
【问题讨论】:
-
是的,MSBuild 肯定知道如何做到这一点。很多程序员都有超过 10 个项目的解决方案,如果该功能不起作用,他们的工作将相当悲惨。您问题中的信息没有给出任何提示可能有什么问题,请将 MSBuild 详细程度更改为“诊断”以获取详细跟踪。由于您刚刚开始将这些项目放在一起,因此实际上不使用参考是简单的解释。
-
@HansPassant:很多程序员确实有 10 多个项目的解决方案,但这并不意味着其中一个会在显式引用链中引用所有其他的。
-
当然,这正是重点。如果存在这些链很容易,但它们在实际解决方案中几乎从不存在。但一切仍然被正确复制。
-
@HansPassant 谢谢,问题是可以独立于 A 使用项目 B。我希望将 A 和 B 一起部署并节省一些空间。但是 B 需要 C 独立运行,所以我无法做到这一点。
-
你可以通过这个[链接](stackoverflow.com/questions/280751/…)。可能对你有帮助。
标签: c# visual-studio-2010