MSBuild (attività)

Una piattaforma di compilazione deve poter eseguire un numero illimitato di azioni durante il processo di compilazione. MSBuild usa attività per eseguire queste azioni. Un'attività è un'unità di codice eseguibile usata da MSBuild per eseguire operazioni di compilazione atomica.

Logica delle attività

Il formato di file di progetto XML MSBuild non può eseguire completamente le operazioni di compilazione autonomamente, pertanto la logica dell'attività deve essere implementata all'esterno del file di progetto.

La logica di esecuzione di un'attività viene implementata come classe .NET che implementa l'interfaccia ITask, definita nello spazio dei nomi Microsoft.Build.Framework.

La classe dell'attività definisce anche i parametri di input e di output disponibili per l'attività nel file di progetto. A tutte le proprietà non astratte non statiche non statiche esposte dalla classe di attività è possibile assegnare valori nel file di progetto inserendo un attributo corrispondente con lo stesso nome nell'elemento Task e impostandone il valore, come illustrato negli esempi più avanti in questo articolo.

Per scrivere un'attività personalizzata, è sufficiente creare una classe gestita che implementi l'interfaccia ITask. Per altre informazioni, vedere Scrittura di attività.

Esecuzione di un'attività da un file di progetto

Prima di eseguire un'attività nel file di progetto, è necessario eseguire il mapping del tipo nell'assembly che implementa l'attività al nome dell'attività con l'elemento UsingTask. In questo modo, MSBuild sa dove cercare la logica di esecuzione dell'attività quando la trova nel file di progetto.

Per eseguire un'attività in un file di progetto MSBuild, creare un elemento con il nome dell'attività come figlio di un Target elemento. Se un'attività accetta i parametri, questi vengono passati come attributi dell'elemento.

Gli elenchi di elementi e le proprietà di MSBuild possono essere usati come parametri. Ad esempio, il codice seguente chiama l'attività MakeDir e imposta il valore della Directories proprietà dell'oggetto MakeDir uguale al valore della BuildDir proprietà :

<Target Name="MakeBuildDirectory">
    <MakeDir
        Directories="$(BuildDir)" />
</Target>

Le attività possono anche restituire informazioni al file di progetto, che è possibile archiviare in elementi o proprietà per un uso futuro. Il codice seguente, ad esempio, chiama l'attività Copy e archivia le informazioni 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 molte attività, ad esempio Copy, che copia i file, MakeDir, che crea directory e Csc, che compila i file di codice sorgente C#. Per un elenco completo delle attività disponibili e per informazioni sull'utilizzo, vedere Informazioni di riferimento sull'attività.

Attività sottoposte a override

MSBuild cerca le attività in diverse posizioni. Il primo percorso si trova nei file con l'estensione archiviata .OverrideTasks nella directory MSBuild. Le attività in questi file eseguono l'override delle altre attività con gli stessi nomi, incluse le attività nel file di progetto. Il secondo percorso si trova nel file di progetto e nelle relative importazioni. Se l'attività non è definita nel progetto, verrà eseguita la ricerca nelle attività predefinite di MSBuild definite in un .tasks file nella directory MSBuild.