Die ausführbare Datei wurde nicht neu erstellt, aber die Objektdateien wurden neu kompiliert

Erstellen eines grundlegenden C ++ - Projekts mit Visual Studio 2012. Wenn ich Änderungen an Quelldateien vornehme:

Die entsprechenden Objektdateien werden kompiliertDie .tlog-Dateien für den Compiler werden aktualisiertDie PDB-Datei wird aktualisiertDie .tlog-Dateien für den Linker werden jedoch nicht geändertder Linker behauptetAll outputs are up-to-date. und erstellt keine neue ausführbare Datei.

Die einzige Möglichkeit, die ausführbare Datei zu erstellen, besteht darin, sie zu löschen. Es scheint, dass etwas mit dem Tracking-System nicht stimmt, und ich habe mich gefragt, ob jemand etwas Licht in dieses Problem bringen kann.

Hier ist die Ausgabe von msbuild, nachdem ich zwei Dateien geändert habe, vollständige Pfade und einige andere Dinge weggelassen habe (diese Ausgabe gilt für das VS2010-Toolset, aber 2012 verhält sich genauso):

 1>Target "ClCompile" in file "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.targets"...
  Using "CL" task from assembly "Microsoft.Build.CppTasks.Win32, Version=4.0.0.0...
  Task "CL"
    Read Tracking Logs:
     cl.read.1.tlog
     CL.2520.read.1.tlog
     ...
    Outputs for ....
     XXX.OBJ
     YYY.OBJ
     ...
    xxx.cpp will be compiled as xxx.cpp was modified...
    yyy.cpp will be compiled as yyy.cpp was modified...
    Write Tracking Logs:
     cl.write.1.tlog
     CL.2520.write.1.tlog
     ...
    C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe ....
    Tracking command:
    C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\Tracker.exe ....
    xxx.cpp
    yyy.cpp
  Done executing task "CL".
1>Done building target "ClCompile" in project "xxx.vcxproj".

So weit, ist es gut. Jetzt tritt der Linker ein (nun, das tut er nicht):

1>Target "Link" in file "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.targets"....
  Using "Link" task from assembly "Microsoft.Build.CppTasks.Win32, Version=4.0.0.0...
  Task "Link"
    Using cached output dependency table built from:
    link.write.1.tlog
    Using cached input dependency table built from:
     ink.read.1.tlog
    Outputs for ....
     MY.EXE
     MY.PDB
    All outputs are up-to-date.
  Done executing task "Link".
  Task "Message"
    xxx.vcxproj -> my.exe
  Done executing task "Message".
1>Done building target "Link" in project "xxx.vcxproj".

Antworten auf die Frage(1)

Ihre Antwort auf die Frage