Benutzerdefinierte Team Foundation-Buildziele

Aktualisiert: November 2007

MSBuild-Ziele definieren, wie ein MSBuild-Projekt erstellt wird. In der Datei Microsoft.TeamFoundation.Build.targets werden die Zielhierarchie sowie ein Satz von vordefinierten MSBuild-Aufgaben und -Zielen für Team Foundation Build festgelegt, die für alle Team Foundation Build-Typen verwendet werden. Builddefinitionen enthalten eine Projektdatei mit dem Namen TfsBuild.proj. Die Projektdatei kann einer einzelnen oder mehreren Builddefinitionen zugeordnet werden. TfsBuild.proj importiert die Datei Microsoft.TeamFoundation.Build.targets und enthält Werte für verschiedene Eigenschaften und Elementgruppen. Sie können die Datei TfsBuild.proj anpassen, um in der Hierarchie einige der Erweiterungspunktziele zu überschreiben. Die TARGETS-Datei befindet sich in <root>:\Programme\MSBuild\Microsoft\VisualStudio\TeamBuild auf dem Build-Agent.

Wichtiger Hinweis:

Nehmen Sie an der Datei Microsoft.TeamFoundation.Build.targets keine Änderungen vor.

Weitere Informationen zu MSBuild-Zielen finden Sie unter MSBuild-Ziele.

Ziele, die mit Aufgaben angepasst werden können

Aufgaben sind in Zielen enthalten. Aufgaben stellen den Code bereit, der während des Buildprozesses ausgeführt wird. In der folgenden Tabelle werden alle Team Foundation Build-Ziele aufgelistet, die für die Erweiterbarkeit festgelegt sind. Fügen Sie Ihre Aufgaben in eines dieser Ziele ein, je nachdem, wann Ihre benutzerdefinierten Aufgaben während des Buildprozesses ausgeführt werden sollen.

Hinweis:

Sie sollten keine anderen Ziele überschreiben.

Zielname

Beschreibung

BeforeEndToEndIteration

Fügen Sie die Aufgabe in dieses Ziel ein, um ganz am Anfang des Buildprozesses benutzerdefinierte Aufgaben auszuführen.

AfterEndToEndIteration

Fügen Sie die Aufgabe in dieses Ziel ein, um am Ende des Buildprozesses benutzerdefinierte Aufgaben auszuführen.

BeforeInitializeWorkspace

Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben vor der Initialisierung des Arbeitsbereichs auszuführen.

AfterInitializeWorkspace

Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben nach der Initialisierung des Arbeitsbereichs auszuführen.

BuildNumberOverrideTarget

Fügen Sie die Aufgabe in dieses Ziel ein, um die Eigenschaften Buildnummer oder Ablageort anzupassen. Von der Aufgabe, die Sie schreiben, muss eine Ausgabeeigenschaft mit dem Namen BuildNumber erstellt werden.

BeforeClean

Wird vor dem Bereinigungsversuch aufgerufen. Fügen Sie die Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben vor dem Bereinigen auszuführen.

AfterClean

Wird nach Abschluss der Bereinigung aufgerufen. Fügen Sie die Aufgabe in dieses Ziel ein, um benutzerdefinierte Ziele nach dem Bereinigen auszuführen.

BeforeGet

Wird aufgerufen, bevor Quellen von der Quellcodeverwaltung abgerufen werden. Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben vor dem Abrufen von Quellen auszuführen.

AfterGet

Wird aufgerufen, nachdem Quellen abgerufen wurden. Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben nach dem Abrufen von Quellen auszuführen.

BeforeLabel

Wird aufgerufen, bevor die Quellen bezeichnet werden. Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben vor dem Label-Ziel auszuführen.

AfterLabel

Wird nach Abschluss der Bezeichnung aufgerufen. Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben nach dem Label-Ziel auszuführen.

BeforeCompile

Wird vor dem Start der Kompilierung aufgerufen. Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben vor der Kompilierung von Codedateien auszuführen.

BeforeCompileConfiguration

Fügen Sie die Aufgabe in dieses Ziel ein, um vor der Kompilierung einer einzelnen Konfiguration benutzerdefinierte Aufgaben auszuführen.

BeforeCompileSolution

Fügen Sie die Aufgabe in dieses Ziel ein, um vor der Kompilierung einer einzelnen Projektmappe benutzerdefinierte Aufgaben auszuführen.

AfterCompileSolution

Fügen Sie die Aufgabe in dieses Ziel ein, um nach der Kompilierung einer einzelnen Projektmappe benutzerdefinierte Aufgaben auszuführen.

AfterCompileConfiguration

Fügen Sie die Aufgabe in dieses Ziel ein, um nach der Kompilierung einer einzelnen Konfiguration benutzerdefinierte Aufgaben auszuführen.

AfterCompile

Wird nach Abschluss der Kompilierung aufgerufen. Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben nach der Kompilierung von Codedateien auszuführen. Ein Beispiel finden Sie unter Exemplarische Vorgehensweise: Konfigurieren von Team Foundation Build zum Erstellen eines Visual Studio-Setup-Projekts.

BeforeGetChangesetsAndUpdateWorkItems

Fügen Sie die Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben auszuführen, bevor Changesets zugeordnet und Arbeitsaufgaben aktualisiert werden.

AfterGetChangesetsAndUpdateWorkItems

Fügen Sie die Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben auszuführen, nachdem Changesets zugeordnet und Arbeitsaufgaben aktualisiert wurden.

BeforeTest

Wird vor der Ausführung von Tests aufgerufen. Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben vor dem Test-Ziel auszuführen.

BeforeTestConfiguration

Fügen Sie die Aufgabe in dieses Ziel ein, um vor dem Testen einer einzelnen Konfiguration benutzerdefinierte Aufgaben auszuführen.

AfterTestConfiguration

Fügen Sie die Aufgabe in dieses Ziel ein, um nach dem Testen einer einzelnen Konfiguration benutzerdefinierte Aufgaben auszuführen.

AfterTest

Wird nach Abschluss der Tests aufgerufen. Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben nach dem Test-Ziel auszuführen.

BeforeDropBuild

Wird vor dem Speichern der erstellten Binärdateien, der Buildprotokolldateien und der Testergebnisse im Buildablageverzeichnis auf dem Releaseserver aufgerufen. Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben auszuführen, bevor die erstellten Dateien im Ablageverzeichnis gespeichert werden.

AfterDropBuild

Wird nach dem Speichern der erstellten Binärdateien, der Buildprotokolldateien und der Testergebnisse auf dem Releaseserver aufgerufen. Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben auszuführen, nachdem die erstellten Dateien im Ablageverzeichnis gespeichert wurden.

BeforeCreateWorkItem

Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben vor der Erstellung von Arbeitsaufgaben auszuführen.

AfterCreateWorkItem

Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben nach der Erstellung von Arbeitsaufgaben auszuführen.

BeforeOnBuildBreak

Wird aufgerufen, bevor als Ergebnis einer Buildunterbrechung eine Arbeitsaufgabe erstellt wird. Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben vor dem BuildBreak-Ziel auszuführen.

AfterOnBuildBreak

Wird aufgerufen, nachdem als Ergebnis einer Buildunterbrechung eine Arbeitsaufgabe erstellt worden ist. Fügen Sie Ihre Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben nach dem BuildBreak-Ziel auszuführen.

GenerateDocumentation

Dies ist ein leeres Ziel. Fügen Sie die Aufgabe in dieses Ziel ein, um während des Buildprozesses automatisch die Dokumentation zu generieren.

Überschreiben von Zielen zum Ausführen benutzerdefinierter Aufgaben

Der Aufgabencode, den Sie schreiben, muss einem Ziel zugeordnet werden. Stellen Sie außerdem sicher, dass die erstellten Binärdateien auf dem Buildcomputer verfügbar sind. Geben Sie dazu entweder den Quellcodeverwaltungspfad in der Datei TfsBuild.proj an, oder stellen Sie die Binärdateien auf dem Buildcomputer selbst zur Verfügung. Zusätzlich müssen Sie die benutzerdefinierte Aufgabe in der Datei TfsBuild.proj registrieren, indem Sie sie mit dem MSBuild-Element UsingTask deklarieren. Weitere Informationen finden Sie unter UsingTask-Element (MSBuild). Stellen Sie im letzten Schritt die DLL-Datei, die die benutzerdefinierte Aufgabe enthält, auf dem Buildcomputer bereit.

Wichtiger Hinweis:

Jede Builddefinition, die der von Ihnen angepassten Datei TfsBuild.proj zugeordnet ist, ist von der Änderung betroffen.

Ein Beispiel für eine End-to-End-Implementierung einer benutzerdefinierten Aufgabe finden Sie unter Exemplarische Vorgehensweise: Anpassen von Team Foundation Build mithilfe einer benutzerdefinierten Aufgabe.

Reihenfolge der Zielausführung

Die Reihenfolge der Ausführung der Ziele hängt vom Wert der CleanCompilationOutputOnly-Eigenschaft ab. Wenn CleanCompilationOutputOnlytrue ist, werden die bereinigten Ziele (BeforeClean, CoreClean und AfterClean) nach dem get-Ziel und dem label-Ziel (BeforeGet, CoreGet, AfterGet, BeforeLabel, CoreLabel und AfterLabel) ausgeführt. Wenn die CleanCompilationOutputOnly-Eigenschaft false ist, werden die bereinigten Ziele vor den get- und label-Zielen ausgeführt. Wenn CleanCompilationOutputOnlytrue ist, werden nur die Zwischenassemblys während der Ausführung des CoreClean-Ziels aus dem Quellverzeichnis entfernt. Wenn diese Eigenschaft auf false festgelegt ist, wird während der CoreClean-Zielausführung das gesamte Quellverzeichnis gelöscht.

Die folgende Tabelle zeigt die geordnete Liste der Ziele, die abhängig vom Wert CleanCompilationOutputOnlytrue oder false ausgeführt werden. Die Ziele, die Sie überschreiben können, sind entsprechend gekennzeichnet.

CleanCompilationOutputOnly = true

CleanCompilationOutputOnly = false

  1. InitializeBuildProperties

  2. BeforeEndToEndIteration (Überschreiben möglich)

  3. BuildNumberOverrideTarget (Überschreiben möglich)

  4. InitializeEndToEndIteration

  5. BeforeInitializeWorkspace (Überschreiben möglich)

  6. CoreInitializeWorkspace

  7. AfterinitializeWorkspace (Überschreiben möglich)

  8. InitializeBuild

  9. BeforeGet (Überschreiben möglich)

  10. CoreGet

  11. AfterGet (Überschreiben möglich)

  12. BeforeLabel (Überschreiben möglich)

  13. CoreLabel

  14. AfterLabel (Überschreiben möglich)

  15. BeforeClean (Überschreiben möglich)

  16. CoreCleanCompilationOutput

  17. AfterClean (Überschreiben möglich)

  18. BeforeCompile (Überschreiben möglich)

  19. CoreCompile (für jede Plattform/Konfigurationskombination)

  20. BeforeCompileConfiguration (Überschreiben möglich)

  21. CoreCompileConfiguration (für jede zu erstellende Projektmappe)

  22. BeforeCompileSolution (Überschreiben möglich)

  23. CoreCompileSolution

  24. AfterCompileSolution (Überschreiben möglich)

  25. AfterCompileConfiguration (Überschreiben möglich)

  26. AfterCompile (Überschreiben möglich)

  27. BeforeGetChangesetsAndUpdateWorkItems (Überschreiben möglich)

  28. CoreGetChangeSetsAndUpdateWorkItems

  29. AfterGetChangesetsAndUpdateWorkItems (Überschreiben möglich)

  30. BeforeTest (Überschreiben möglich)

  31. CoreTest (für jede Plattform/Konfigurationskombination)

  32. BeforeTestConfiguration (Überschreiben möglich)

  33. CoreTestConfiguration

  34. AfterTestConfiguration (Überschreiben möglich)

  35. AfterTest (Überschreiben möglich)

  36. GenerateDocumentation (Überschreiben möglich)

  37. PackageBinaries (Überschreiben möglich)

  38. BeforeDropBuild (Überschreiben möglich)

  39. CoreDropBuild

  40. AfterDropBuild (Überschreiben möglich)

  41. AfterEndToEndIteration (Überschreiben möglich)

  1. InitializeBuildProperties

  2. BeforeEndToEndIteration (Überschreiben möglich)

  3. BuildNumberOverrideTarget (Überschreiben möglich)

  4. InitializeEndToEndIteration

  5. BeforeInitializeWorkspace (Überschreiben möglich)

  6. CoreInitializeWorkspace

  7. AfterInitializeWorkspace (Überschreiben möglich)

  8. BeforeClean (Überschreiben möglich)

  9. CoreClean

  10. AfterClean (Überschreiben möglich)

  11. InitializeBuild

  12. BeforeGet (Überschreiben möglich)

  13. CoreGet

  14. AfterGet (Überschreiben möglich)

  15. BeforeLabel (Überschreiben möglich)

  16. CoreLabel

  17. AfterLabel (Überschreiben möglich)

  18. BeforeCompile (Überschreiben möglich)

  19. CoreCompile (für jede Plattform/Konfigurationskombination)

  20. BeforeCompileConfiguration (Überschreiben möglich)

  21. CoreCompileConfiguration (für jede zu erstellende Projektmappe)

  22. BeforeCompileSolution (Überschreiben möglich)

  23. CoreCompileSolution

  24. AfterCompileSolution (Überschreiben möglich)

  25. AfterCompileConfiguration (Überschreiben möglich)

  26. AfterCompile (Überschreiben möglich)

  27. BeforeGetChangesetsAndUpdateWorkItems (Überschreiben möglich)

  28. CoreGetChangeSetsAndUpdateWorkItems

  29. AfterGetChangesetsAndUpdateWorkItems (Überschreiben möglich)

  30. BeforeTest (Überschreiben möglich)

  31. CoreTest (für jede Plattform/Konfigurationskombination)

  32. BeforeTestConfiguration (Überschreiben möglich)

  33. CoreTestConfiguration

  34. AfterTestConfiguration (Überschreiben möglich)

  35. AfterTest (Überschreiben möglich)

  36. GenerateDocumentation (Überschreiben möglich)

  37. PackageBinaries (Überschreiben möglich)

  38. BeforeDropBuild (Überschreiben möglich)

  39. CoreDropBuild

  40. AfterDropBuild (Überschreiben möglich)

  41. AfterEndToEndIteration (Überschreiben möglich)

Die folgende Liste enthält die Ziele, die ausgeführt werden, wenn während der Ausführung des CoreCompile-Ziels ein Fehler auftritt. Die Ziele, die Sie überschreiben können, sind entsprechend gekennzeichnet.

  1. SetBuildBreakProperties

  2. BeforeOnBuildBreak (Überschreiben möglich)

  3. GetChangesetsOnBuildBreak

  4. BeforeDropBuild (Überschreiben möglich)

  5. CoreDropBuild

  6. AfterDropBuild (Überschreiben möglich)

  7. BeforeCreateWorkItem (Überschreiben möglich)

  8. CoreCreateWorkItem

  9. AfterCreateWorkItem (Überschreiben möglich)

  10. CoreOnBuildBreak

  11. AfterOnBuildBreak (Überschreiben möglich)

Siehe auch

Aufgaben

Gewusst wie: Schreiben von Aufgaben

Konzepte

Team Foundation Build-Konfigurationsdateien

Anpassbare Team Foundation-Buildeigenschaften

Team Foundation Build-Aufgaben