Elemento Target (MSBuild)
Contiene un insieme di attività da eseguire in sequenza in MSBuild.
<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>
Attributi ed elementi
Nelle sezioni seguenti vengono illustrati attributi, elementi figlio e padre.
Attributi
Attribute |
Oggetto di descrizione |
---|---|
Name |
Attributo obbligatorio. Nome della destinazione. |
DependsOnTargets |
Attributo facoltativo. Le destinazioni che devono essere eseguite prima di questa destinazione possono essere eseguite oppure si può verificare l'analisi delle dipendenze di livello principale. Se sono specificate più destinazioni, queste sono separate da punti e virgola. |
Returns |
Attributo facoltativo. Set di elementi che saranno resi disponibili per le attività tramite cui viene richiamata questa destinazione, ad esempio, le attività MSBuild. Se sono specificate più destinazioni, queste sono separate da punti e virgola. |
Inputs |
Attributo facoltativo. Input di elementi per questa destinazione. Gli elementi all'interno dell'attributo vengono utilizzati come input nell'analisi delle dipendenze di livello principale. |
Outputs |
Attributo facoltativo. Output previsti per questa destinazione. È possibile applicare trasformazioni agli elementi di input per generare elementi di output. Per ulteriori informazioni sulle trasformazioni, vedere Trasformazioni di MSBuild. |
BeforeTargets |
Attributo facoltativo. Elenco separato da punti e virgola di nomi di destinazione. Se specificato, indica che questa destinazione deve essere eseguita prima delle destinazioni specificate. In tal modo l'autore del progetto può estendere un set esistente di destinazioni senza modificarle direttamente. |
AfterTargets |
Attributo facoltativo. Elenco di nomi di destinazioni separati da punto e virgola. Se specificato, indica che questa destinazione deve essere eseguita dopo le destinazioni specificate. In tal modo l'autore del progetto può estendere un set esistente di destinazioni senza modificarle direttamente. |
KeepDuplicateOutputs |
Attributo booleano facoltativo. Se true, vengono registrati più riferimenti allo stesso elemento nell'attributo Outputs. Per impostazione predefinita, questo attributo è false. |
Condition |
Attributo facoltativo. Condizione da valutare. Se tramite la condizione viene restituito false, il corpo della destinazione o di eventuali destinazioni impostate nell'attributo DependsOnTargets non verrà eseguito. Per ulteriori informazioni sulle condizioni, vedere Condizioni di MSBuild. |
Elementi figlio
Elemento |
Oggetto di descrizione |
---|---|
Crea ed esegue un'istanza di un'attività MSBuild. In una destinazione possono essere presenti zero o più attività. |
|
Determina l'esecuzione di una o più destinazioni se l'attributo ContinueOnError è impostato su false per un'attività non riuscita. In una destinazione possono essere presenti zero o più elementi OnError. Gli elementi OnError eventualmente presenti devono comparire per ultimi all'interno dell'elemento Target. |
Elementi padre
Elemento |
Oggetto di descrizione |
---|---|
Elemento radice obbligatorio di un file di progetto MSBuild. |
Note
La prima destinazione da eseguire viene specificata in fase di esecuzione. Le destinazioni possono contenere dipendenze da altre destinazioni. Ad esempio, una destinazione per la distribuzione dipende da una destinazione per la compilazione. MSBuild consente di eseguire le dipendenze nell'ordine in cu sono visualizzate nell'attributo DependsOnTargets, da sinistra a destra. Per ulteriori informazioni, vedere Destinazioni di MSBuild.
Anche se più destinazioni contengono una dipendenza da una specifica destinazione, questa viene eseguita una sola volta durante una compilazione.
Se una destinazione viene ignorata perché tramite il relativo attributo Condition viene restituito false, può essere comunque eseguita richiamandola in una fase successiva della compilazione. A questo punto, tramite il relativo attributo Condition viene restituito true.
Prima di MSBuild 4, tramite Target veniva restituito qualsiasi elemento specificato nell'attributo Outputs. A tal fine, è stato necessario registrare questi elementi in MSBuild nel caso in cui venissero richiesti dalle attività successivamente nella compilazione. Poiché non esisteva un modo per indicare quali destinazioni disponevano di output richiesti dai chiamanti, tutti gli elementi di tutti gli Outputs in tutte le Target richiamate sono stati accumulati in MSBuild. In tal modo, i problemi per le compilazioni con un gran numero di elementi di output vengono ridimensionati.
Se l'utente specifica un attributo Returns per ogni elemento Target di un progetto, vengono registrati solo gli elementi Target che dispongono di un attributo Returns.
Un elemento Target potrebbe contenere un attributo Outputs e un attributo Returns. L'attributo Outputs viene utilizzato insieme all'attributo Inputs per determinare se la destinazione è aggiornata. Tramite l'attributo Returns, se presente, viene eseguito l'override del valore dell'attributo Outputs per determinare quali elementi vengono restituiti ai chiamanti. Se Returns non è presente, Outputs sarà reso disponibile ai chiamanti tranne nel caso descritto in precedenza.
Prima di MSBuild 4, ogni volta che in una Target erano inclusi più riferimenti allo stesso elemento nei relativi Outputs, tali elementi duplicati venivano registrati. In compilazioni di grandi dimensioni con un numero elevato di output e numerose interdipendenze del progetto, questa situazione comporterebbe lo spreco di una notevole quantità di memoria dal momento che gli elementi duplicati non verrebbero utilizzati in alcun modo. Se l'attributo KeepDuplicateOutputs è impostato su true, questi duplicati non vengono memorizzati.
Esempio
Nell'esempio di codice riportato di seguito viene illustrato 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>