Freigeben über


Target-Element (MSBuild)

Enthält Aufgaben, die MSBuild sequenziell ausführen soll.

<Target Name="Target Name"
        DependsOnTargets="DependentTarget"
        Inputs="Inputs"
        Outputs="Outputs"
        Returns="Returns"
        KeepDuplicateOutputs="true/false"
        BeforeTargets="Targets"
        AfterTargets="Targets"
        Condition="'String A' == 'String B'">
    <Task>... </Task>
    <OnError... />
</Target>

Attribute und Elemente

In den folgenden Abschnitten werden Attribute, untergeordnete Elemente und übergeordnete Elemente beschrieben.

Attribute

Attribute

Beschreibungen

Name

Erforderliches Attribut.

Der Name des Ziels.

DependsOnTargets

Optionales Attribut.

Die Ziele, die ausgeführt werden müssen, bevor dieses Ziel ausgeführt werden kann oder eine Analyse der Abhängigkeit auf der höchsten Ebene erfolgen kann. Mehrere Ziele werden durch Semikolons getrennt.

Returns

Optionales Attribut.

Der Satz der Elemente, die für Aufgaben verfügbar gemacht werden, die dieses Ziel, z. B. MSBuild-Aufgaben, aufrufen. Mehrere Ziele werden durch Semikolons getrennt.

Inputs

Optionales Attribut.

Die Elementeingaben für dieses Ziel. Elemente in diesem Attribut werden als Eingaben in der Analyse der Abhängigkeit auf der höchsten Ebene verwendet.

Outputs

Optionales Attribut.

Die erwarteten Ausgaben dieses Zieles. Sie können Transformationen auf die Eingabeelemente anwenden, um die Ausgabeelemente zu generieren. Weitere Informationen zu Transformationen finden Sie unter MSBuild-Transformationen.

BeforeTargets

Optionales Attribut.

Eine durch Semikolons getrennte Liste von Zielnamen. Wenn angegeben, gibt dies an, dass dieses Ziel vor dem angegebenen Ziel bzw. den Zielen ausgeführt werden soll. Auf diese Weise kann der Projektautor einen vorhandenen Satz von Ziele zu erweitern, ohne ihn direkt zu ändern.

AfterTargets

Optionales Attribut.

Eine durch Semikolon getrennte Liste von Zielnamen. Wenn angegeben, gibt dies an, dass dieses Ziel nach dem angegebenen Ziel bzw. den angegebenen Zielen ausgeführt werden soll. Auf diese Weise können die Projektautoren einen vorhandenen Satz von Zielen erweitern, ohne sie direkt ändern.

KeepDuplicateOutputs

Optionales boolesches Attribut.

Bei true werden mehrere Verweise auf dasselbe Element in Ausgänge aufgezeichnet. Standardmäßig ist dieses Attribut false.

Condition

Optionales Attribut.

Die Bedingung wird ausgewertet. Wenn die Bedingung false ergibt, werden die Aufgaben des Ziels oder der ggf. im DependsOnTargets-Attribut festgelegten Ziele nicht ausgeführt. Weitere Informationen zu Bedingungen finden Sie unter MSBuild-Bedingungen.

Untergeordnete Elemente

Element

Beschreibungen

Aufgabe

Erstellt eine Instanz einer MSBuild-Aufgabe und führt diese aus. Es kann keine oder mehrere Aufgaben in einem Ziel geben.

OnError

Bewirkt, dass ein oder mehrere Ziele ausgeführt werden, wenn das ContinueOnError-Attribut für eine fehlgeschlagene Aufgabe den Wert false aufweist. Es kann keine oder mehrere OnError-Elemente in einem Ziel geben. Wenn OnError-Elemente vorhanden sind, müssen diese die letzten Elemente im Target-Element sein.

Übergeordnete Elemente

Element

Beschreibungen

Project

Erforderliches Stammelement einer MSBuild-Projektdatei.

Hinweise

Das erste auszuführende Ziel wird zur Laufzeit angegeben. Ziele können von anderen Zielen abhängig sein. So ist z. B. ein Bereitstellungsziel von einem Kompilierungsziel abhängig. Das MSBuild-Modul führt Abhängigkeiten in der Reihenfolge aus, in der sie im DependsOnTargets-Attribut angezeigt werden (von links nach rechts). Weitere Informationen finden Sie unter MSBuild-Ziele.

Ein Ziel wird während eines Buildvorgangs nur einmal ausgeführt, auch wenn mehrere Ziele von diesem abhängig sind.

Wenn ein Ziel übersprungen wird, da das entsprechende Condition-Attribut false ergibt, kann es trotzdem ausgeführt werden, wenn es zu einem späteren Zeitpunkt im Buildvorgang aufgerufen wird und das Condition-Attribut dann true ergibt.

Vor MSBuild 4 gab Target alle Elemente zurück, die im Outputs-Attribut angegeben wurden. MSBuild muss zu diesem Zweck diese Elemente aufzeichnen, falls spätere Aufgaben im Build sie anfordern. Da es keine Möglichkeit gab, anzugeben, welche Ziele Ausgänge hatten, die Aufrufer anfordern würden, sammelte MSBuild alle Elemente aus allen Outputs für alle aufgerufenen Targets. Dieses führt zu Skalierungsprobleme bei Builds, die eine große Anzahl von Ausgabeelementen haben.

Wenn der Benutzer ein Returns für ein beliebiges Target-Element in einem Projekt angibt, dann zeichnen nur die Targets mit dem Returns Attribut diese Elemente auf.

Ein Target kann Outputs Attribut und ein Returns -Attribut enthalten. Outputs wird mit Inputs verwendet, um festzustellen, ob das Ziel auf dem neuesten Stand ist. Returns, sofern vorhanden, überschreibt den Wert von Outputs, um zu bestimmen, welche Elemente an Aufrufer zurückgegeben werden. Wenn Returns nicht vorhanden ist, dann wird Outputs für Anrufer, außer im oben beschriebenen Fall, bereitgestellt werden.

Vor MSBuild 4 wurde jedes Mal, wenn ein Target mehrere Verweise auf dasselbe Element in den Outputs enthielt, diese doppelten Elemente aufgezeichnet. In sehr großen Builds, die eine große Anzahl von Ausgaben und viele Projektabhängigkeiten hatten, würde dies dazu führen, dass eine große Menge an Arbeitsspeicher verschwendet wird, weil die doppelten Elemente nicht von Nutzen waren. Wenn das Attribut KeepDuplicateOutputs auf true festgelegt ist, werden diese Duplikate nicht gespeichert.

Beispiel

Im folgenden Codebeispiel wird ein Target-Element veranschaulicht, 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>

Siehe auch

Konzepte

MSBuild-Ziele

Referenz zum MSBuild-Projektdateischema