Condividi tramite


Cenni preliminari su MSBuild

Aggiornamento: novembre 2007

Microsoft Build Engine (MSBuild) è la nuova piattaforma di compilazione per Microsoft e Visual Studio. Poiché è completamente trasparente per quanto riguarda la modalità di elaborazione e compilazione del software, MSBuild consente agli sviluppatori di progettare e compilare prodotti in ambienti di compilazione in cui Visual Studio non è installato. In questo argomento verranno fornite brevi panoramiche di:

  • Elementi di base di un file di progetto MSBuild.

  • Modalità di utilizzo di MSBuild per compilare progetti.

  • Funzionalità avanzate di MSBuild.

  • Modalità di utilizzo di MSBuild in Visual Studio per compilare progetti.

File di progetto

MSBuild introduce un nuovo formato di file di progetto basato su XML, semplice da comprendere e da estendere e completamente supportato da Microsoft. Il formato di file di progetto di MSBuild consente agli sviluppatori di descrivere tutti gli elementi da compilare e la relativa modalità di compilazione quando si utilizzano piattaforme e configurazioni diverse. Gli sviluppatori hanno inoltre la possibilità di creare regole di compilazione riutilizzabili che possono essere organizzate in file separati, in modo da consentire un'esecuzione coerente delle compilazioni all'interno di vari progetti del prodotto. Nelle sezioni seguenti verranno descritti alcuni degli elementi di base del formato di file di progetto di MSBuild.

Elementi

Gli elementi rappresentano gli input destinati al sistema di compilazione e vengono raggruppati in insiemi di elementi in base ai nomi degli insiemi definiti dall'utente. Tali insiemi possono essere utilizzati come parametri per le attività, che utilizzano a loro volta i singoli elementi in essi contenuti per eseguire i passaggi del processo di compilazione.

Per dichiarare gli elementi nel file di progetto, è necessario creare, come figlio di un elemento ItemGroup, un elemento con lo stesso nome dell'insieme di elementi. Il codice riportato di seguito, ad esempio, crea un insieme di elementi, con nome Compile, che include due file.

<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

La sintassi @(ItemCollectionName) consente di fare riferimento agli insiemi di elementi nell'intero file di progetto. È ad esempio possibile fare riferimento all'insieme di elementi dell'esempio precedente utilizzando @(Compile).

Gli elementi possono essere dichiarati utilizzando caratteri jolly e possono contenere ulteriori metadati per scenari di compilazione più avanzati. Per ulteriori informazioni sugli elementi, vedere Elementi MSBuild.

Proprietà

Le proprietà sono coppie di chiave/valore che possono essere utilizzate per configurare le compilazioni. Gli elementi e le proprietà si differenziano per gli aspetti riportati di seguito:

  • Gli elementi sono memorizzati negli insiemi, mentre le proprietà contengono un unico valore scalare.

  • Gli elementi non possono essere rimossi dagli insiemi, mentre è possibile modificare i valori delle proprietà dopo che queste sono state definite.

  • Gli elementi, a differenza delle proprietà, possono contenere metadati e utilizzare la notazione %(ItemMetadata).

Per dichiarare le proprietà, è necessario creare, come figlio di un elemento PropertyGroup, un elemento con lo stesso nome della proprietà. Il codice riportato di seguito, ad esempio, crea una proprietà con nome BuildDir e con un valore di Build.

<PropertyGroup>
    <BuildDir>Build</BuildDir>
</PropertyGroup>

La sintassi $(PropertyName) consente di fare riferimento alle proprietà nell'intero file di progetto. È ad esempio possibile fare riferimento alla proprietà dell'esempio precedente utilizzando $(BuildDir). Per ulteriori informazioni sulle proprietà, vedere Proprietà di MSBuild.

Attività

Le attività sono unità riutilizzabili di codice eseguibile utilizzate da progetti di MSBuild per eseguire operazioni di compilazione. Ad esempio, un'attività potrebbe compilare file di input o eseguire uno strumento esterno. Una volta create, le attività possono essere condivise e riutilizzate da sviluppatori diversi in progetti diversi.

La logica di esecuzione di un'attività viene scritta in codice gestito e mappata a MSBuild con l'elemento UsingTask. Per scrivere un'attività personalizzata, è sufficiente creare un tipo gestito che implementi l'interfaccia ITask. Per ulteriori informazioni sulla scrittura di attività, vedere Procedura: scrivere un'attività.

MSBuild viene fornito con numerose attività comuni, 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.

Per eseguire un'attività in un file di progetto di MSBuild, creare un elemento con il nome dell'attività come elemento figlio di un elemento Target. Le attività generalmente accettano i parametri, che vengono passati come attributi dell'elemento. Le proprietà e gli insiemi di elementi di MSBuild possono essere utilizzati come parametri. Il codice riportato di seguito, ad esempio, chiama l'attività MakeDir e le passa il valore della proprietà BuildDir dichiarata nell'esempio precedente.

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

Per ulteriori informazioni sulle attività, vedere Attività di MSBuild.

Destinazioni

Le destinazioni raggruppano le attività in un determinato ordine ed espongono le sezioni del file di progetto come punti di ingresso al processo di compilazione. Le destinazioni vengono spesso raggruppate in sezioni logiche, per consentire l'espansione e garantire una maggiore leggibilità. La suddivisione delle istruzioni di compilazione in più destinazioni consente di chiamare una parte del processo di compilazione da altre destinazioni senza dover copiare la corrispondente sezione di codice in ognuna di esse. Se ad esempio vari punti di ingresso al processo di compilazione richiedono la compilazione di riferimenti, è possibile creare una destinazione che compili riferimenti ed eseguire tale destinazione da tutti i punti di ingresso necessari.

Le destinazioni vengono dichiarate nel file di progetto con l'elemento Target. Il codice riportato di seguito, ad esempio, crea una destinazione con nome Compile, che a sua volta chiama l'attività Csc con l'insieme di elementi dichiarato nell'esempio precedente.

<Target Name="Compile">
    <Csc Sources="@(Compile)" />
</Target>

In caso di destinazioni appartenenti a scenari più avanzati è possibile descrivere le relazioni reciproche ed eseguire un'analisi delle dipendenze, che consente di ignorare intere sezioni del processo di compilazione se la destinazione si rivela già aggiornata. Per ulteriori informazioni sulle destinazioni, vedere Destinazioni di MSBuild.

Compilazione con MSBuild

Per eseguire MSBuild dalla riga di comando, è sufficiente passare un file di progetto a MSBuild.exe utilizzando le opzioni appropriate della riga di comando. Tali opzioni consentono di impostare proprietà, eseguire determinate destinazioni e specificare i logger. Per compilare ad esempio il file MyProj.proj con la proprietà Configuration impostata su Debug, è possibile utilizzare la sintassi della riga di comando riportata di seguito.

MSBuild.exe MyProj.proj /property:Configuration=Debug

Per ulteriori informazioni sulle opzioni della riga di comando disponibili per MSBuild, vedere Riferimenti alla riga di comando di MSBuild.

Nota sulla sicurezza:

Prima di compilare un progetto scaricato, determinare l'attendibilità del codice. I file di progetto di MSBuild sono infatti in grado di eseguire attività che possono danneggiare il sistema.

Concetti avanzati

MSBuild può essere utilizzato durante la compilazione per effettuare operazioni più avanzate, quali la registrazione di errori, avvisi e messaggi per la console o altri logger, l'esecuzione di analisi delle dipendenze sulle destinazioni e la creazione di batch di attività e destinazioni sui metadati degli elementi. Per ulteriori informazioni su questi concetti avanzati, vedere Concetti avanzati relativi a MSBuild.

Integrazione con Visual Studio

In Visual Studio viene utilizzato il formato di file di progetto di MSBuild per archiviare le informazioni di compilazione relative ai progetti gestiti. Le impostazioni di progetto aggiunte e modificate tramite Visual Studio sono riportate nel file .*proj generato per ogni progetto. In Visual Studio viene utilizzata un'istanza contenuta di MSBuild per compilare progetti gestiti, pertanto è possibile compilare un progetto gestito in Visual Studio e dalla riga di comando, anche se Visual Studio non è installato, con risultati identici. Per ulteriori informazioni sull'utilizzo di MSBuild in Visual Studio, vedere Concetti avanzati relativi a MSBuild.

Vedere anche

Concetti

MSBuild

Destinazioni di MSBuild

Attività di MSBuild

Elementi MSBuild

Proprietà di MSBuild

Batch MSBuild

Panoramica della registrazione in MSBuild

Trasformazioni di MSBuild

Integrazione di Visual Studio (MSBuild)

Riferimenti dello schema del file di progetto MSBuild

Altre risorse

Riferimenti a MSBuild

Riferimenti delle attività MSBuild