Attività di MSBuild
Una piattaforma di compilazione deve essere in grado di eseguire un numero qualsiasi di azioni durante il processo di compilazione. In MSBuild vengono utilizzate le attività per eseguire tali azioni. Un'attività è un'unità di codice eseguibile utilizzata da MSBuild per eseguire operazioni di compilazione atomiche.
Logica dell'attività
Il file di progetto XML di MSBuild non è in grado di eseguire completamente le operazioni di compilazione, pertanto è necessario implementare una logica dell'attività all'esterno del file di progetto.
La logica di esecuzione di un'attività viene implementata come classe .NET, la quale implementa l'interfaccia ITask, definita nello spazio dei nomi Microsoft.Build.Framework.
La classe di attività definisce inoltre i parametri di input e output disponibili per l'attività nel file di progetto. Nel file di progetto è possibile accedere a tutte le proprietà pubbliche impostabili non astratte e non statiche, esposte dalla classe di attività, inserendo un attributo corrispondente con lo stesso nome nell'elemento Task.
Per scrivere un'attività personalizzata, è sufficiente creare una classe gestita che implementi l'interfaccia ITask. Per ulteriori informazioni, vedere Scrittura di attività.
Esecuzione di un'attività da un file di progetto
Prima di eseguire un'attività in un file di progetto, occorre dapprima associare il tipo nell'assembly che implementa l'attività al nome dell'attività con l'elemento UsingTask. Ciò permette a MSBuild di conoscere il percorso in cui cercare la logica di esecuzione dell'attività quando questa viene rilevata nel file di progetto.
Per eseguire un'attività in un file di progetto di MSBuild, creare, come figlio di un elemento Target, un elemento con lo stesso nome dell'attività. Se l'attività accetta i parametri, questi vengono passati come attributi dell'elemento.
È possibile utilizzare come parametri gli elenchi di elementi di MSBuild. Ad esempio, il codice riportato di seguito richiama l'attività MakeDir e imposta il valore della proprietà Directories dell'oggetto MakeDir come uguale al valore della proprietà BuildDir dichiarata nell'esempio precedente.
<Target Name="MakeBuildDirectory">
<MakeDir
Directories="$(BuildDir)" />
</Target>
Le attività possono restituire ai file di progetto anche informazioni, le quali verranno memorizzate in elementi o proprietà per un utilizzo successivo. Il codice di esempio riportato di seguito chiama l'attività Copy e archivia le informazioni reperite dalla proprietà di output CopiedFiles nell'elenco di elementi SuccessfullyCopiedFiles.
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="@(MyDestFolder)">
<Output
TaskParameter="CopiedFiles"
ItemName="SuccessfullyCopiedFiles"/>
</Copy>
</Target>
Attività incluse
MSBuild viene fornito con numerose attività, ad esempio Copy per eseguire la copia dei file, MakeDir per creare le directory e Csc, per compilare i file di codice sorgente Visual C#. Per un elenco completo delle attività disponibili e per informazioni sul relativo utilizzo, vedere Riferimenti delle attività MSBuild.
Attività sottoposte a override
Tramite MSBuild viene eseguita la ricerca delle attività in diverse posizioni. La prima posizione è rappresentata dai file con estensione .OverrideTasks archiviati nelle directory di .NET Framework. Le attività in questi file eseguono l'override di tutte le altre attività con gli stessi nomi, incluse le attività nel file di progetto. La seconda posizione è rappresentata dai file con estensione .Tasks nelle directory di .NET Framework. Se l'attività non viene trovata in una di queste posizioni, viene utilizzata l'attività nel file di progetto.