Freigeben über


Benutzerdefinierte Team Foundation-Buildziele

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.

Wichtig

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 die Aufgaben, je nachdem, wann Ihre benutzerdefinierten Aufgaben während des Buildprozesses ausgeführt werden sollen, in eines dieser Ziele ein.

Tipp

Sie sollten keine anderen Ziele überschreiben.

Target Name

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 die Aufgabe in dieses Ziel ein, um benutzerdefinierte Aufgaben vor dem Label-Ziel auszuführen.

AfterLabel

Wird nach Abschluss der Bezeichnung aufgerufen. Fügen Sie die 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.

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 die 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 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 die 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 die Dokumentation zu generieren.

Überschreiben von Zielen zum Ausführen benutzerdefinierter Aufgaben

Der von Ihnen erstellte Aufgabencode muss einem Ziel zugeordnet werden. Weitere Informationen finden Sie unter Schreiben von Aufgaben. Zum Erstellen einer benutzerdefinierten Aufgabe müssen Sie die folgenden Schritte ausführen.

  1. Schreiben Sie den Aufgabencode, und stellen Sie sicher, dass die erstellten Binärdateien auf dem Buildcomputer verfügbar sind. Geben Sie dazu den Quellcodeverwaltungspfad in der Datei TfsBuild.proj an, oder stellen Sie die Binärdateien auf dem Buildcomputer selbst zur Verfügung.

    Tipp

    Als Vorgehensweise bei der Codierung wird empfohlen, Aufgabencode in die Quellcodeverwaltung einzuchecken, jedoch ist dies ist nicht unbedingt notwendig.

  2. Registrieren Sie die benutzerdefinierte Aufgabe in der Datei TfsBuild.proj, indem Sie sie mit dem MSBuild-Element UsingTask deklarieren.

    Weitere Informationen finden Sie unter UsingTask-Element (MSBuild).

    <UsingTask 
        TaskName="MyTasks.SimpleTask" 
        AssemblyName="MyAssembly.Build.Tasks"/>
    
  3. Führen Sie die Aufgabe aus, indem Sie diese in das gewünschte Ziel in der Datei TfsBuild.proj einfügen.

    <Target Name="BeforeGet">
        <SimpleTask />
    </Target>
    

    Tipp

    Beim Hinzufügen dieses Tags werden XML-Schemawarnungen verursacht. Sie können diese Warnungen gefahrlos ignorieren.

  4. Stellen Sie die DLL-Datei mit der benutzerdefinierten Aufgabe auf dem Buildcomputer bereit.

    Wichtig

    Die Änderung wirkt sich auf jede Builddefinition aus, die der von Ihnen angepassten Datei TfsBuild.proj zugeordnet ist.

Reihenfolge der Zielausführung

Die Reihenfolge der Ausführung der Ziele hängt vom Wert der CleanCompilationOutputOnly-Eigenschaft ab. Wenn CleanCompilationOutputOnly true 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 CleanCompilationOutputOnly true 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 je nach CleanCompilationOutputOnly-Wert true oder false ausgeführt werden. Die Ziele, die Sie überschreiben können, werden in fettem Text angezeigt.

CleanCompilationOutputOnly = true

CleanCompilationOutputOnly = false

  1. InitializeBuildProperties

  2. BeforeEndToEndIteration

  3. BuildNumberOverrideTarget

  4. InitializeEndToEndIteration

  5. BeforeInitializeWorkspace

  6. CoreInitializeWorkspace

  7. AfterinitializeWorkspace

  8. InitializeBuild

  9. BeforeGet

  10. CoreGet

  11. AfterGet

  12. BeforeLabel

  13. CoreLabel

  14. AfterLabel

  15. BeforeClean

  16. CoreCleanCompilationOutput

  17. AfterClean

  18. BeforeCompile

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

  20. BeforeCompileConfiguration

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

  22. BeforeCompileSolution

  23. CoreCompileSolution

  24. AfterCompileSolution

  25. AfterCompileConfiguration

  26. AfterCompile

  27. BeforeGetChangesetsAndUpdateWorkItems

  28. CoreGetChangeSetsAndUpdateWorkItems

  29. AfterGetChangesetsAndUpdateWorkItems

  30. BeforeTest

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

  32. BeforeTestConfiguration

  33. CoreTestConfiguration

  34. AfterTestConfiguration

  35. AfterTest

  36. GenerateDocumentation

  37. BeforeDropBuild

  38. CoreDropBuild

  39. AfterDropBuild

  40. AfterEndToEndIteration

  1. InitializeBuildProperties

  2. BeforeEndToEndIteration

  3. BuildNumberOverrideTarget

  4. InitializeEndToEndIteration

  5. BeforeInitializeWorkspace

  6. CoreInitializeWorkspace

  7. AfterInitializeWorkspace

  8. BeforeClean

  9. CoreClean

  10. AfterClean

  11. InitializeBuild

  12. BeforeGet

  13. CoreGet

  14. AfterGet

  15. BeforeLabel

  16. CoreLabel

  17. AfterLabel

  18. BeforeCompile

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

  20. BeforeCompileConfiguration

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

  22. BeforeCompileSolution

  23. CoreCompileSolution

  24. AfterCompileSolution

  25. AfterCompileConfiguration

  26. AfterCompile

  27. BeforeGetChangesetsAndUpdateWorkItems

  28. CoreGetChangeSetsAndUpdateWorkItems

  29. AfterGetChangesetsAndUpdateWorkItems

  30. BeforeTest

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

  32. BeforeTestConfiguration

  33. CoreTestConfiguration

  34. AfterTestConfiguration

  35. AfterTest

  36. GenerateDocumentation

  37. BeforeDropBuild

  38. CoreDropBuild

  39. AfterDropBuild

  40. AfterEndToEndIteration

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, werden in fettem Text angezeigt.

  1. SetBuildBreakProperties

  2. BeforeOnBuildBreak

  3. GetChangesetsOnBuildBreak

  4. BeforeDropBuild

  5. CoreDropBuild

  6. AfterDropBuild

  7. BeforeCreateWorkItem

  8. CoreCreateWorkItem

  9. AfterCreateWorkItem

  10. CoreOnBuildBreak

  11. AfterOnBuildBreak

Siehe auch

Konzepte

Team Foundation Build-Konfigurationsdateien

Anpassbare Team Foundation-Buildeigenschaften