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>