Target-Element (MSBuild)
Enthält eine Reihe von Aufgaben, die MSBuild sequenziell ausführt.
<Projekt><Ziel>
Syntax
<Target Name="Target Name"
Inputs="Inputs"
Outputs="Outputs"
Returns="Returns"
KeepDuplicateOutputs="true/false"
BeforeTargets="Targets"
AfterTargets="Targets"
DependsOnTargets="DependentTarget"
Condition="'String A' == 'String B'"
Label="Label">
<Task>... </Task>
<PropertyGroup>... </PropertyGroup>
<ItemGroup>... </ItemGroup>
<OnError... />
</Target>
Attribute und Elemente
In den folgenden Abschnitten werden Attribute sowie untergeordnete und übergeordnete Elemente beschrieben.
Attribute
Attribut | Beschreibung |
---|---|
Name |
Erforderliches Attribut. Der Name des Ziels. Ein Zielname kann alle Zeichen außer $@()%*?. enthalten. |
Condition |
Optionales Attribut. Die auszuwertende Bedingung. Ergibt die Bedingung false , führt das Ziel den Hauptteil des Ziels oder alle Ziele nicht aus, die im DependsOnTargets -Attribut festgelegt sind. Weitere Informationen zu Bedingungen finden Sie unter Bedingungen. |
Inputs |
Optionales Attribut. Die Dateien, die Eingaben in das Ziel bilden. Mehrere Dateien werden durch Semikolons getrennt. Der Zeitstempel der Dateien wird mit den Zeitstempeln von Dateien in Outputs verglichen, um festzustellen, ob die Target aktuell ist. Weitere Informationen finden Sie unter Inkrementelle Builds, Vorgehensweise: Inkrementelles Erstellen und Transformationen. |
Outputs |
Optionales Attribut. Die Dateien, die Ausgaben für dieses Ziel bilden. Mehrere Dateien werden durch Semikolons getrennt. Der Zeitstempel der Dateien wird mit den Zeitstempeln von Dateien in Inputs verglichen, um festzustellen, ob die Target aktuell ist. Weitere Informationen finden Sie unter Inkrementelle Builds, Vorgehensweise: Inkrementelles Erstellen und Transformationen. |
Returns |
Optionales Attribut. Eine Reihe von Elementen, die Aufgaben zur Verfügung gestellt werden, die dieses Ziel aufrufen, z.B. MSBuild-Aufgaben. Mehrere Zahlen werden durch Semikolons getrennt. Wenn die Ziele in der Datei keine Returns Attribute haben, werden stattdessen die Ausgabeattribute für diesen Zweck verwendet. |
KeepDuplicateOutputs |
Optionales boolesches Attribut. Wenn true , werden mehrere Verweise auf dasselbe Element in den Rückgaben des Ziels erfasst. Standardmäßig ist dieses Attribut false . |
BeforeTargets |
Optionales Attribut. Eine durch Semikolon getrennte Liste von Zielnamen. Wenn angegeben, bedeutet dies, dass das Ziel vor dem oder den angegebenen Zielen ausgeführt werden soll. Der Projektautor erweitert dann einen vorhandenen Satz von Zielen, ohne sie direkt zu ändern. Weitere Informationen finden Sie unter Buildreihenfolge für Ziele. |
AfterTargets |
Optionales Attribut. Eine durch Semikolon getrennte Liste von Zielnamen. Wenn angegeben, bedeutet dies, dass das Ziel nach dem oder den angegebenen Zielen ausgeführt werden soll. Der Projektautor erweitert dann einen vorhandenen Satz von Zielen, ohne sie direkt zu ändern. Weitere Informationen finden Sie unter Buildreihenfolge für Ziele. |
DependsOnTargets |
Optionales Attribut. Die Ziele müssen ausgeführt werden, bevor das Ziel ausgeführt oder eine Abhängigkeitsanalyse der obersten Ebene stattfinden kann. Mehrere Zahlen werden durch Semikolons getrennt. |
Label |
Optionales Attribut. Ein Bezeichner, der System- und Benutzerelemente identifizieren oder ordnen kann. |
Untergeordnete Elemente
Element | Beschreibung |
---|---|
Aufgabe | Erstellt und führt eine Instanz einer MSBuild-Aufgabe aus. Ein Ziel kann null oder mehrere Elemente enthalten. |
PropertyGroup | Enthält eine Reihe von benutzerdefinierten Property -Elementen. Seit .NET Framework 3.5 enthält ein Target -Element möglicherweise PropertyGroup -Elemente. |
ItemGroup | Enthält eine Reihe von benutzerdefinierten Item -Elementen. Seit .NET Framework 3.5 enthält ein Target -Element möglicherweise ItemGroup -Elemente. Weitere Informationen finden Sie unter Elemente. |
OnError | Bewirkt, dass mindestens ein Element ausgeführt wird, wenn das ContinueOnError -Attribut für eine fehlgeschlagene Aufgabe ErrorAndStop (oder false ) ist. Ein Ziel kann null oder mehrere OnError -Elemente enthalten. Wenn OnError -Elemente vorhanden sind, müssen sie die letzten Elemente im Target -Element sein.Weitere Informationen zu den ContinueOnError -Attributen finden Sie unter Aufgabenelement (MSBuild). |
Übergeordnete Elemente
Element | Beschreibung |
---|---|
Projekt | Erforderliches Stammelement einer MSBuild-Projektdatei. |
Hinweise
Das erste auszuführende Ziel wird zur Laufzeit angegeben. Ziele können von anderen Zielen abhängig sein. Ein Ziel für die Bereitstellung beispielsweise ist von einem Ziel für die Kompilierung abhängig. Die MSBuild-Engine führt Abhängigkeiten in der Reihenfolge aus, in der sie im DependsOnTargets
-Attribut erscheinen, d. h. von links nach rechts. Weitere Informationen finden Sie unter Ziele.
MSBuild ist von der Importreihenfolge abhängig, sodass die letzte Definition eines Ziels mithilfe eines bestimmten Name
-Attributs die verwendete Definition ist.
Ein Ziel wird nur einmal während eines Builds ausgeführt, auch wenn mehrere Ziele eine Abhängigkeit aufweisen.
Wenn ein Ziel übersprungen wird, da sein Condition
-Attribut false
ergibt, kann es dennoch ausgeführt werden, wenn es später im Build aufgerufen wird und sein Condition
-Attribut zu diesem Zeitpunkt true
ergibt.
Vor MSBuild 4 hat Target
alle Elemente zurückgegeben, die im Outputs
-Attribut angegeben waren. Zu diesem Zweck musste MSBuild diese Elemente für den Fall aufzeichnen, dass sie später im Build von Aufgaben angefordert werden. Da nicht angegeben werden konnte, welche Ziele Ausgaben hatten, die Aufrufer anfordern würden, sammelte MSBuild alle Elemente aus allen Outputs
für alle aufgerufenen Target
. Dies führte zu Skalierungsproblemen bei Builds, die eine große Anzahl von Ausgabeelementen hatten.
Wenn der Benutzer ein Returns
für ein Target
-Element in einem Projekt angibt, erfassen nur die Target
mit einem Returns
-Attribut diese Elemente.
Ein Target
kann ein Outputs
-Attribut und ein Returns
-Attribut enthalten. Outputs
wird mit Inputs
verwendet, um festzustellen, ob das Ziel aktuell ist. Returns
, falls vorhanden, überschreibt den Wert von Outputs
, um zu bestimmen, welche Elemente an Aufrufer zurückgegeben werden. Wenn Returns
nicht vorhanden ist, wird Outputs
, außer in dem weiter oben beschriebenen Fall, für Anrufer verfügbar gemacht.
Vor MSBuild 4 wurden jedes Mal, wenn ein Target
mehrere Verweise auf dasselbe Element in seinem Outputs
enthielt, doppelte Elemente aufgezeichnet. In sehr großen Builds mit einer großen Anzahl von Ausgaben und vielen Projektabhängigkeiten wurde dadurch viel Speicher vergeudet, da die doppelten Elemente nicht von Nutzen waren. Wenn das KeepDuplicateOutputs
-Attribut auf true
festgelegt ist, werden die doppelten Elemente aufgezeichnet.
Beispiel
Das folgende Codebeispiel zeigt ein Target
-Element, das die Csc
-Aufgabe ausführt.
<Target Name="Compile" DependsOnTargets="Resources" Returns="$(TargetPath)">
<Csc Sources="@(CSFile)"
TargetType="library"
Resources="@(CompiledResources)"
EmitDebugInformation="$(includeDebugInformation)"
References="@(Reference)"
DebugType="$(debuggingType)" >
<Output TaskParameter="OutputAssembly"
ItemName="FinalAssemblyName" />
</Csc>
</Target>