2016-05-05 7 views
2

Ich versuche, unsere Hauptprojekt erstellen (C++) über Team Build-System (TFS 2013) zu automatisieren. Ich sehe jedoch, dass ein paar Projekte immer erstellt werden, auch wenn keine Codeänderung stattgefunden hat, während dies nicht mit VS2013 auf meinem Entwicklungscomputer geschieht. Dies würde einige Kopfschmerzen verursachen, da Binärdateien immer erzeugt und an das Testteam gesendet würden, selbst wenn sie nicht wirklich modifiziert würden.TFS-Build: Projekte neu erstellt, auch wenn nicht geändert

Aktivieren "Diagnose" Ausführlichkeit in Build-Ausgabe, sehe ich, dass die beiden Projekt unterschiedliche Verhalten zeigen.

Im ersten Projekt wird im Protokoll angegeben, dass alle CPP-Dateien neu erstellt werden, da die .PCH-Datei geändert wurde (obwohl keine Änderung stattgefunden hat). Ich könnte versuchen, den PCH zu deaktivieren, würde es aber, wenn möglich, wirklich vermeiden. Außerdem würde die Ursache des Fehlers nicht offen bleiben, wenn der Fehler immer wieder auftritt.

Im zweiten Projekt haben wir einen Pre-Build-Schritt, der eine .h-Datei generiert. Prebuild-Schritte sollten jedoch nicht ausgeführt werden, wenn keine Änderung im Code erkannt wurde (https://msdn.microsoft.com/en-us/library/42x5kfw4.aspx), so geschieht es tatsächlich auf meinem Entwicklungscomputer. Auf der Build-Maschine wird stattdessen der Prebuild-Schritt ausgeführt, die .h-Datei generiert und dies erzwingt eine vollständige Neuerstellung.

In den Team-Build-Einstellungen habe ich "Clean workspace = false", "Clean build = false". Ich habe auch versucht, "/ p: IncrementalBuild = True" in MSBuild-Einstellungen, aber das Problem nicht behoben.

Hinweis - Ich habe bereits Visual Studio Rebuilds unmodified projects und VS2010 always rebuilds solution? vor der Buchung betrachtet.

Antwort

0

Gemäß Ihren Informationen zu project2 wird der Pre-Build-Schritt auf dem Build-Agent ausgeführt und nicht auf Ihrem lokalen Computer ausgeführt. Ihre lokale Build-Umgebung und die Build-Agent-Umgebung müssen etwas anderes aufweisen. Dies könnte die Ursache sein.

Wir empfehlen Ihnen, es zu überprüfen und sicherzustellen, dass die Umgebung die gleiche ist. Und versuch es noch einmal.

+0

Anscheinend sollten die Build-Umgebungen die gleichen sein. Der Test-Agent wurde für diese Build-Automatisierungsaufgabe erstellt, so dass kein altes/beschädigtes Material herumliegen sollte. Ich versuchte mit einem delete all/Get-Build in beiden Umgebungen und bekam immer noch das gleiche Ergebnis - VS Build verhält sich wie erwartet , TFS build kompiliert diese beiden Projekte aus einem Dutzend. –