Wenn an einem Projekt der geladenen Projektmappe (Solution) im Visual Studio (VS) seit dem letzten erfolgreichen Erstellungsvorgang Veränderungen vorgenommen wurden, dann wird das vom VS erkannt und beim nächsten Erstellungsvorgang entweder automatisch oder nach Rückfrage berücksichtigt. Die entsprechenden Einstellungen, die festlegen, wie in diesem Fall vorgegangen werden soll, können im Optionen-Dialog des VS (über das Menü „Extras“ erreichbar) angepasst werden (vgl. Erstellen und Ausführen, Projekte und Projektmappen, Dialogfeld “Optionen”):

Hat man die Einstellung Zum Erstellen auffordern ausgewählt, so wird man fortan über veraltete Projektkonfigurationen folgendermaßen informiert:

In diesem Beispiel ist ein Projekt der gesamten Projektmappe veraltet.
Nun kann es in einigen Fällen aber eben doch vorkommen, dass dieser Dialog auch dann angezeigt wird, wenn an dem Projekt definitiv nichts verändert wurde. Das ist natürlich lästig, weil das Erstellen immer wieder wertvolle Zeit kostet und den eigentlichen Entwicklungsfluss mitunter stark beeinträchtigen kann. Daher wäre es sehr hilfreich, wenn man irgendwie herausfinden könnte, warum das VS der Meinung ist, dass ein neues Erstellen des Projektes erforderlich ist.
Bei einer Recherche im Internet bin ich dann auf den Artikel Enable C++ project system logging von Andrew L Arnott gestoßen, in dem beschrieben wird, wie man dem Problem auf die Spur kommen kann.
Schritt 1: System-Logging für c++-Projekte aktivieren
Zunächst muss das System-Logging für c++-Projekte aktiviert werden. Die Konfigurationsdatei devenv.exe.config aus dem Verzeichnis
%PROGRAMFILES%\Microsoft Visual Studio 10.0\Common7\IDE\
muss dazu um einige Zeilen ergänzt werden:
<?xml version ="1.0"?>
<configuration>
<configSections>
...
</configSections>
<!-- Begin Neu -->
<system.diagnostics>
<switches>
<add name="CPS" value="4" />
</switches>
</system.diagnostics>
<!-- Ende Neu -->
...
</configuration>
Damit diese Änderung aktiv wird, muss VS neu gestartet werden.
Schritt 2: Log-Informationen abfangen
Nachdem der Logging-Mechanismus im ersten Schritt erfolgreich aktiviert wurde, muss festgelegt werden, wie die geloggten Informationen abgefangen werden können. Hierfür gibt es verschiedene Möglichkeiten. Eine Möglichkeit, die nachfolgend betrachtet wird, besteht darin, die Log-Einträge mit dem Werkzeug DebugView, das man kostenlos von der Microsoft-Internetseite herunterladen kann, abzufangen und darzustellen. DebugView kann man ohne aufwendige Installation in ein beliebiges Verzeichnis entpacken und ausführen. Startet man dann – bei laufendem DebugView – wieder das Debugging aus dem VS heraus, dann werden verschiedene Ausgaben des VS von DebugView abgefangen und direkt angezeigt. Sobald der bereits oben erwähnte Dialog mit der Information über das veraltete Projekt wieder erscheint, kann die Ausgabe des DebugView-Tools nach entsprechenden Informationen durchsucht werden. In dem hier beschrieben Fall weisen die Ausgaben darauf hin, dass über die Projektdatei auf 12 Header-Dateien verwiesen wird, die auf dem lokalen Rechner gar nicht (mehr) existieren:

Tatsächlich wurden diese Dateien erst vor kurzem entfernt. In der Projektdatei waren diese Dateien also nicht mehr zu finden. Eine weitere Suche über die Dateien (und deren Inhalte) in dem Verzeichnis des Projekts brachte dann aber einige weitere Fundstellen zu Tage. Infolgedessen wurde die gesamte Build-Ausgabe für das Projekts bereinigt, was dazu geführt hat, dass diese veralteten Dateien gelöscht wurden. Nach einem erneuten Erstellen des Projekts war das Problem dann behoben.
Links