我有两个C(CLR)项目的解决方案.一个项目引用另一个项目,因此项目依赖项和构建顺序正确地反映了这一点.两个项目都针对同一个输出文件夹.依赖项目具有使用Copy Local:false配置的依赖项.
如果我自己“重建”依赖项,它构建正常,其目标位于输出目录中.
当我“重建”解决方案(或依赖项目)时,我得到:
error LNK1181: cannot open input file '<outdir>\Dependency.lib'
果然,依赖输出从输出目录中消失了.如果我查看构建日志,依赖项似乎已经(重新)正确构建,但是一旦依赖项目构建开始,这些输出似乎就被删除了.为什么会这样?
此外,当我“清理”解决方案,然后立即“构建”解决方案,我没有得到任何错误.
是不是“重建”应该是有效的Clean Build?
最佳答案 Visual Studio中的重建逐个清理和构建项目,因此最终可能发生的事情是
>项目A已清理.
>项目A已编译.
>清除项目B,由于相同的输出目录,从项目A中删除部分输出.
>由于缺少依赖项,项目B无法构建.
更多讨论here.