我有 Visual Studio 2008 SP1,两个 C++/CLI 项目,比如说 proj1 和 proj2。proj2 依赖于 proj1,但方式很奇怪(见下文)。在项目依赖项中,我指定 proj2 依赖于 proj1。proj2 参考也包括 proj1。然后我希望 proj1 成为 proj2 的朋友,因此,正如“Friend Assemblies”上的 MSDN 页面所说,我在 proj2 的某处写了这段代码:
#使用“proj1.dll”作为_friend。
编译说 proj1.dll 已经被引用,我应该从 proj2 项目设置中删除项目引用(从而删除 /FU 标志)。
这里出现了错误(?):如果我从 proj2 中删除 proj1 引用,但仍然在解决方案 Project Dependencies 中指定 proj2 依赖于 proj1,那么在 VS2008 中一切都可以编译。但是 MSBUILD 解析项目引用,为 proj2 创建新的临时项目,添加 /FU:proj1.dll 和构建失败!
问题 1:有没有办法禁用此 MSBuild 行为?
然后,如果我删除项目依赖项中的依赖项,MSBuild 构建良好,但 Visual Studio 尝试并行编译 proj1 和 proj2,但失败,因为 proj2 小得多并且首先编译...在项目和解决方案中设置最大并行构建选项/ Build and Run 有帮助,但我必须在每台开发人员机器上都这样做,我无法在解决方案中保存此设置,这会使构建速度变慢等等......
问题2:有没有办法让“项目依赖”成为条件选项?我希望它适用于 VS2008 和 MSBuild ......