由于修改了无关的文件,VS2010重建了C++项目

Ant*_*onK 8 visual-studio-2010 msbuild-4.0

正如我们所有人都已经知道的那样,VS2010已经对其构建系统进行了重大升级,该系统基于MSBuild.
根据MS代表的说法(参见Visual Studio 2010中的评论总是在休眠/重启计算机后重建项目)MSBuild现在将自己注入其他工具(如C++编译器,链接器等)以找出目标的依赖关系.
这种方法的一个缺点是,现在您的项目可能会因为无关文件的修改而被强制重建 :(
在我的情况下C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN,它是由NVIDIA更新服务(Windows 7 32位)定期更改的.

我发现通过将VS2010选项" MSBuild项目构建输出详细程度 "和" MSBuild项目构建日志文件详细程度 "转换为" 诊断 ".
之后,我能够在Build Output窗口中看到问题的原因:

Task "CL" (TaskId:55)
  Read Tracking Logs: (TaskId:55)
    ..\..\temp\Release\Editor\cl.read.1.tlog (TaskId:55)
  Outputs for E:\USERS\A.USER.ORG\DEVEL\EDITOR\STDAFX.CPP: (TaskId:55)
E:\USERS\A.USER.ORG\DEVEL\TEMP\RELEASE\EDITOR\STDAFX.OBJ (TaskId:55)
  C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN was modified at 23-Feb-12 12:08:20. (TaskId:55)
 stdafx.cpp will be compiled. (TaskId:55)
...
 Tracking command: (TaskId:55)
 C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\Tracker.exe ... stdafx.cpp /clr:nostdlib  (TaskId:55)
 stdafx.cpp (TaskId:55)
Done executing task "CL". (TaskId:55)
Run Code Online (Sandbox Code Playgroud)

其中一个解决方法是将不相关的文件添加到C++忽略列表:

<ItemGroup>
  <ClNoDependencies Include="NVDRSDB0.BIN" />
  <ClNoDependencies Include="C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这没有帮助:(我还没有检查这个技巧在其他PC上是如何工作的,这些文件不存在.

所以问题仍然存在:是否有人知道这个问题的工作解决方案

我没有尝试为VS2010安装SP1 - 根据发烧友的说法,这一步也无济于事.
禁用NVIDIA更新服务可能会有所帮助(它将停止更新文件),但有一些或者可能有其他软件无法以这种方式禁用(防病毒,其他实用程序等).
另见相关问题:

ald*_*ldo 1

我有同样的问题,除了我的情况下的“修改”文件是

C:\PROGRAMDATA\SOPHOS\SOPHOS ANTI-VIRUS\CONFIG\CONFIG.BOPS
Run Code Online (Sandbox Code Playgroud)

微软承认存在一个错误(将在下一版本中修复)并建议解决方法

http://connect.microsoft.com/VisualStudio/feedback/details/715572/unexpected-rebuild-of-projects

http://connect.microsoft.com/VisualStudio/feedback/details/649139/vs2010-does-complete-rebuild-based-on-completely-unlated-file

但到目前为止,这些都对我不起作用。我还在尝试搞砸我的

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.targets
Run Code Online (Sandbox Code Playgroud)

文件并将如下内容添加到我的属性表中

<ItemGroup>
  <ClNoDependencies Include="C:\PROGRAMDATA\SOPHOS\SOPHOS ANTI-VIRUS\CONFIG\CONFIG.BOPS"/>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

但到目前为止我还没有运气。也许您可以让这个解决方法为您工作?(如果有的话请告诉我!)