【发布时间】:2011-09-26 19:05:21
【问题描述】:
Visual Studio 有时会因为一个小改动而决定重建我的整个庞大项目。我将构建日志记录转到诊断以查看问题所在,这就是我所看到的:
< Bunch of spam >
Outputs for C:\<snip>\PRECOMPILEDHEADERS.CPP:
C:\<snip>\PRECOMPILEDHEADERS.OBJ
All outputs are up-to-date.
Forcing rebuild of all source files due to a change in the command line
...然后它会重建我的预编译头文件,然后是其他所有内容。
当我在项目中更改单个 .cpp 或 .h 文件时会发生这种情况。我没有更改项目设置中的任何内容。同样的变化也不会一直发生。这是随机的。
对这里发生的事情有任何想法吗?我在哪里可以获得更多信息?我尝试通过http://blogs.msdn.com/b/vsproject/archive/2009/07/21/enable-c-project-system-logging.aspx 中的描述启用调试,但它没有提供更多信息。我无法弄清楚“由于命令行更改而强制重建所有源文件”的来源。它不在任何工厂 MSBuild 文件中。
其他一些信息:它是一个 C++/CLI dll 项目,它链接了许多其他项目,包括 C#、本机 c++ 和其他 C++/CLI dll。我尝试从依赖项中删除所有 C# 项目,因为它们往往会导致问题,但这并没有改变它。我已经用谷歌搜索了那个特定的字符串,但我的情况与其他任何报告它的人都不匹配。 (一个是使用 Intel C++,另一个是 MSBuild 从命令行并更改大小写。我正在从 Visual Studio 本身中找到构建解决方案)。
编辑以解释我尝试过的常见修复:
我尝试只构建项目。做同样的事情。
我不包括任何不存在的 .h 文件。
我已删除 bin/object 文件夹并从头开始重建。这通常会使它在几次构建中消失,但随后又会立即恢复。
编辑#2:
在日志前面发现了一些可疑的东西:
3>Using "ResolveNonMSBuildProjectOutput" task from assembly "Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
3>Task "ResolveNonMSBuildProjectOutput"
3> Resolving project reference "..\..\..\..\CommonCore\VS2010\Project1\Project1.vcxproj".
3> Project reference "..\..\..\..\CommonCore\VS2010\Project1\Project1.vcxproj" has not been resolved.
这在我的几个项目中重复...我将追查它,看看是否可能是项目引用提示路径的问题。
【问题讨论】:
标签: visual-studio-2010 c++-cli rebuild