Share via


Elemento Target (MSBuild)

Contiene un set di attività per MSBuild da eseguire in sequenza.

<Destinazione progetto><>

Sintassi

<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>

Attributi ed elementi

Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.

Attributi

Attributo Descrizione
Name Attributo obbligatorio.

Nome della destinazione. Un nome di destinazione può contenere qualsiasi carattere ad eccezione $@()%*?.di .
Condition Attributo facoltativo.

La condizione da valutare. Se la condizione restituisce false, la destinazione non eseguirà il corpo della destinazione o di eventuali destinazioni impostate nell'attributo DependsOnTargets. Per altre informazioni sulle condizioni, vedere Condizioni.
Inputs Attributo facoltativo.

File che costituiscono gli input in questa destinazione. Per specificare più file, usare il punto e virgola come delimitatore. I timestamp dei file verranno confrontati con i timestamp dei file in Outputs per determinare se Target è aggiornata. Per altre informazioni, vedere Compilazioni incrementali, Procedura: Eseguire la compilazione incrementale e Trasformazioni.
Outputs Attributo facoltativo.

File che costituiscono gli output in questa destinazione. Per specificare più file, usare il punto e virgola come delimitatore. I timestamp dei file verranno confrontati con i timestamp dei file in Inputs per determinare se Target è aggiornata. Per altre informazioni, vedere Compilazioni incrementali, Procedura: Eseguire la compilazione incrementale e Trasformazioni.
Returns Attributo facoltativo.

Set di elementi che saranno disponibili per le attività che richiamano questa destinazione, ad esempio, le attività di MSBuild. Se si specificano più destinazioni, usare il punto e virgola per separarle. Se le destinazioni nel file non hanno attributi Returns, in alternativa vengono usati gli attributi Outputs a questo scopo.
KeepDuplicateOutputs Attributo booleano facoltativo.

Se true, vengono registrati più riferimenti allo stesso elemento negli attributi Returns della destinazione. Per impostazione predefinita, questo attributo è false.
BeforeTargets Attributo facoltativo.

Elenco di nomi di destinazione delimitato a punti e virgola. Se specificato, indica che questa destinazione deve essere eseguita prima della destinazione o delle destinazioni specificate. Ciò consente all'autore del progetto di estendere un set di destinazioni esistente senza modificarle direttamente. Per altre informazioni, vedere Ordine di compilazione delle destinazioni.
AfterTargets Attributo facoltativo.

Elenco di nomi di destinazione delimitato a punti e virgola. Se specificato, indica che questa destinazione deve essere eseguita dopo la destinazione o le destinazioni specificate. Ciò consente all'autore del progetto di estendere un set di destinazioni esistente senza modificarle direttamente. Per altre informazioni, vedere Ordine di compilazione delle destinazioni.
DependsOnTargets Attributo facoltativo.

Destinazioni che devono essere eseguite prima che possa essere eseguita questa destinazione o un'analisi delle dipendenze di primo livello. Se si specificano più destinazioni, usare il punto e virgola per separarle.
Label Attributo facoltativo.

Identificatore che può identificare o ordinare elementi di sistema e utente.

Elementi figlio

Elemento Descrizione
Attività Crea ed esegue un'istanza di un'attività MSBuild. Possono esistere zero o più attività in una destinazione.
PropertyGroup Contiene un set di elementi Property definiti dall'utente. A partire da .NET Framework 3.5, un elemento Target può contenere elementi PropertyGroup.
ItemGroup Contiene un set di elementi Item definiti dall'utente. A partire da .NET Framework 3.5, un elemento Target può contenere elementi ItemGroup. Per altre informazioni, vedere Elementi.
OnError Fa in modo che venga eseguita una o più destinazioni se l'attributo ContinueOnError è ErrorAndStop (o false) per un'attività non riuscita. Possono esistere zero o più elementi OnError in una destinazione. Se sono presenti elementi OnError, devono essere gli ultimi elementi nell'elemento Target.

Per altre informazioni sull'attributo ContinueOnError, vedere Elemento Task (MSBuild).

Elementi padre

Elemento Descrizione
Progetto Elemento radice obbligatorio di un file di progetto MSBuild.

Osservazioni:

La prima destinazione da eseguire viene specificata in fase di esecuzione. Le destinazioni possono avere dipendenze da altre destinazioni. Ad esempio, una destinazione per la distribuzione dipende da una destinazione per la compilazione. Il motore MSBuild esegue le dipendenze nell'ordine in cui vengono visualizzate nell'attributo DependsOnTargets , da sinistra a destra. Per altre informazioni, vedere Destinazioni.

MSBuild si basa sull'ordine di importazione e l'ultima definizione di una destinazione con un attributo Name specifico diventa l'ultima definizione usata.

Una destinazione viene eseguita una sola volta durante una compilazione, anche se ne dipende più di una destinazione.

Se una destinazione viene ignorata perché l'attributo Condition restituisce false, può ugualmente essere eseguita anche se viene richiamata in seguito nella compilazione e l'attributo Condition a quel punto restituisce true.

Prima di MSBuild 4, Target restituiva gli eventuali elementi specificati nell'attributo Outputs. A questo scopo, MSBuild doveva registrare questi elementi nell'eventualità che le attività li richiedessero in un secondo momento durante la compilazione. Poiché non era possibile indicare le destinazioni con output che i chiamanti avrebbero richiesto, MSBuild accumulava tutti gli elementi da tutti gli Outputs in tutte le Target richiamate. Ciò causa problemi di ridimensionamento per le compilazioni con un numero elevato di elementi di output.

Se l'utente specifica Returns in un elemento Target in un progetto, solo le Target con un attributo Returns registrano tali elementi.

Target può contenere sia un attributo Outputs che un attributo Returns. Outputs viene usato con Inputs per determinare se la destinazione è aggiornata. Returns, se presente, esegue l'override del valore di Outputs per determinare quali elementi vengono restituiti ai chiamanti. Se Returns non è presente, Outputs sarà disponibile per i chiamanti tranne nel caso descritto prima.

Prima di MSBuild 4, ogni volta che Target includeva più riferimenti allo stesso elemento in Outputs, tali elementi duplicati venivano registrati. Nelle compilazioni di grandi dimensioni con un numero elevato di output e più interdipendenze tra progetti, veniva sprecata una grande quantità di memoria perché gli elementi duplicati non erano di alcuna utilità. Quando l'attributo KeepDuplicateOutputs viene impostato su true, questi duplicati vengono registrati.

Esempio

L'esempio di codice seguente illustra un elemento Target che esegue l'attività Csc.

<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>

Vedi anche