Condividi tramite


MSBuild

Microsoft Build Engine (MSBuild) è una piattaforma per la compilazione di applicazioni. MSBuild fornisce uno schema XML per un file di progetto che controlla il modo in cui la piattaforma di compilazione elabora e compila il software. Sebbene MSBuild sia integrato in Visual Studio, non dipende da esso. Gli sviluppatori possono orchestrare e compilare prodotti anche negli ambienti in cui Visual Studio non è stato installato.

Nel presente argomento viene fornita una panoramica di MSBuild:

  • 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.

  • Per un'esercitazione introduttiva, vedere Procedura dettagliata: utilizzo di MSBuild

File di progetto

MSBuild utilizza un formato di file di progetto basato su XML chiaro ed estensibile. Il formato del file di progetto MSBuild consente agli sviluppatori di descrivere gli elementi da compilare nonché la relativa modalità di compilazione per sistemi operativi e configurazioni di vario tipo. Gli sviluppatori hanno inoltre la possibilità di creare regole di compilazione riutilizzabili che possono essere organizzate in file separati. Ciò consente di eseguire in modo coerente le compilazioni relative ai vari progetti del prodotto.

Nelle sezioni seguenti vengono descritti alcuni degli elementi di base del formato di file di progetto di MSBuild. Per un'esercitazione sulla creazione di un file di progetto di base, vedere Procedura dettagliata: creazione di un nuovo file di progetto MSBuild.

Proprietà

Le proprietà sono coppie di chiave/valore che possono essere utilizzate per configurare le compilazioni. Per dichiarare le proprietà è necessario creare, come figlio di un elemento PropertyGroup, un elemento con lo stesso nome della proprietà. Ad esempio, il codice seguente consente di creare una proprietà denominata BuildDir con il valore Build.

<PropertyGroup>

<BuildDir>Build</BuildDir>

</PropertyGroup>

Nel file di progetto, per fare riferimento a una proprietà si utilizza la sintassi $(NomeProprietà). Ad esempio, per fare riferimento alla proprietà dell'esempio si utilizza la sintassi $(BuildDir). Per ulteriori informazioni sulle proprietà, vedere Proprietà di MSBuild.

Items

Gli elementi sono input nel sistema di compilazione e in genere rappresentano file. Gli elementi sono raggruppati in tipi di elemento, in base a nomi di elemento definiti dall'utente. Tali tipi di elemento possono essere utilizzati come parametri per le attività, le quali a loro volta utilizzano i singoli elementi dei tipi 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 del tipo di elemento. Ad esempio, il codice seguente crea un tipo di elemento denominato Compile che include due file.

<ItemGroup>

<Compile Include = "file1.cs"/>

<Compile Include = "file2.cs"/>

</ItemGroup>

Nel file di progetto, per fare riferimento a un tipo di elemento si utilizza la sintassi @(TipoElemento). Ad esempio, per fare riferimento al tipo di elemento dell'esempio si utilizza la sintassi @(Compile).

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

Attività

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

La logica di esecuzione di un'attività viene scritta in codice gestito e mappata a MSBuild tramite l'elemento UsingTask. Per scrivere un'attività personalizzata, è sufficiente creare un tipo gestito che implementi l'interfaccia ITask. Per ulteriori informazioni su come scrivere le attività, vedere Scrittura di attività.

MSBuild include attività comuni che è possibile modificare per soddisfare requisiti specifici. Sono ad esempio disponibili le attività Copy per copiare file, MakeDir per creare directory e Csc per compilare file di codice sorgente di Visual C#. Per l'elenco delle attività disponibili e delle relative informazioni sull'utilizzo, vedere Riferimenti delle attività MSBuild.

Per eseguire un'attività in un file di progetto MSBuild si crea, come elemento figlio di un elemento Target, un elemento con il nome dell'attività. In genere le attività accettano parametri che vengono passati come attributi dell'elemento. Sia le proprietà sia gli elementi di MSBuild possono essere utilizzati come parametri. Ad esempio, il codice seguente 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 garantire una maggiore leggibilità e consentire l'espansione. 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. Ad esempio, se alcuni punti di ingresso al processo di compilazione richiedono la compilazione di riferimenti, è possibile creare una destinazione che compila riferimenti e quindi eseguire tale destinazione da ognuno dei suddetti punti di ingresso.

Per dichiarare una destinazione nel file di progetto si utilizza l'elemento Target. Il codice seguente crea ad esempio una destinazione denominata Compile, che a sua volta chiama l'attività Csc con l'elenco di elementi dichiarato nell'esempio precedente.

<Target Name="Compile">

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

</Target>

Negli scenari più avanzati, è possibile utilizzare le destinazioni per descrivere relazioni reciproche ed eseguire analisi delle dipendenze, così da poter ignorare intere sezioni del processo di compilazione per le destinazioni che risultano essere già aggiornate. Per ulteriori informazioni sulle destinazioni, vedere Destinazioni di MSBuild.

Elementi condizionali

Molti elementi MSBuild vengono definiti in base a determinate condizioni. In tal caso, gli elementi contengono l'attributo Condition. Il contenuto degli elementi condizionali viene elaborato solo se la condizione risulta essere "true". Ad esempio,

<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

significa: "Se la proprietà Configuration non è stata ancora definita, definiscila e assegnale il valore Debug".

Quasi tutti gli elementi MSBuild possono presentare un attributo Condition. Per ulteriori informazioni, vedere Condizioni di MSBuild.

Distinzione fra maiuscole e minuscole

L'XML Schema di MSBuild segue le regole del linguaggio XML. I nomi di elementi e attributi prevedono la distinzione tra maiuscole e minuscole. Tuttavia, nel modello a oggetti di MSBuild, i nomi di proprietà, elementi e metadati non prevedono la distinzione tra maiuscole e minuscole. Si consideri il gruppo di elementi seguente.

<ItemGroup>

<Compile Include="one.cs" />

<comPile Include="two.cs" />

</ItemGroup>

Ciò crea il tipo di elemento denominato Compile, comPile o con qualsiasi altra variazione di maiuscole o minuscole e assegna a esso il valore "one.cs;two.cs".

Utilizzo di MSBuild a un prompt dei comandi

Per eseguire MSBuild tramite un prompt dei comandi, passare un file di progetto a MSBuild.exe insieme alle opzioni appropriate della riga di comando. Le opzioni della riga di comando consentono di impostare proprietà, eseguire destinazioni specifiche e impostare altre opzioni che controllano il processo di compilazione. Ad esempio, per compilare il file MyProj.proj con la proprietà Configuration impostata su Debug si utilizza la sintassi della riga di comando seguente.

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

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

Nota sulla sicurezzaNota sulla sicurezza

Prima di scaricare un progetto, determinare l'attendibilità del codice.

Concetti avanzati

MSBuild può essere utilizzato anche per eseguire altre operazioni, ad esempio la registrazione di errori, avvisi e messaggi nella console o in altri dispositivi di output, 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.

Utilizzo di MSBuild in 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 o modificate mediante l'interfaccia Visual Studio vengono riflesse nel file .*proj generato per ogni progetto. Visual Studio utilizza un'istanza di hosting di MSBuild per compilare progetti gestiti. Ciò significa che è possibile compilare un progetto gestito in Visual Studio o dal prompt dei comandi, anche se Visual Studio non è installato, con risultati identici.

Per un'esercitazione sull'utilizzo di MSBuild in Visual Studio, vedere Procedura dettagliata: utilizzo di MSBuild.

Multitargeting

Tramite Visual Studio è possibile compilare un'applicazione da eseguire in una qualunque delle tante versioni di .NET Framework. Ad esempio, è possibile compilare un'applicazione da eseguire in .NET Framework versione 2.0 e compilare la stessa applicazione da eseguire in .NET Framework versione 4. La possibilità di compilare in più framework è denominata multitargeting.

Di seguito sono riportati alcuni dei vantaggi del multitargeting:

  • È possibile sviluppare applicazioni destinate a versioni di .NET Framework precedenti, ad esempio le versioni 2.0, 3.0 e 3.5.

  • È possibile avere framework di destinazione diversi da .NET Framework, ad esempio Silverlight.

  • L'applicazione può essere destinata a un profilo del framework, vale a dire un sottoinsieme predefinito di un framework di destinazione.

  • In caso di rilascio di Service Pack per .NET Framework versione 4, è possibile destinare l'applicazione a tali Service Pack.

  • Il multitargeting garantisce che un'applicazione utilizzi solo le funzionalità disponibili nel framework di destinazione.

  • Per ulteriori informazioni, vedere Multitargeting di MSBuild.

Argomenti correlati

Titolo

Descrizione

Procedura dettagliata: creazione di un nuovo file di progetto MSBuild

Mostra come creare in modo incrementale un file di progetto di base utilizzando soltanto un editor di testo.

Procedura dettagliata: utilizzo di MSBuild

Introduce i blocchi predefiniti di MSBuild e mostra come scrivere, modificare ed eseguire il debug di progetti MSBuild senza chiudere l'ambiente di sviluppo integrato (IDE, Integrated Development Environment) di Visual Studio.

Concetti relativi a MSBuild

Presenta i quattro blocchi predefiniti di MSBuild: proprietà, elementi, destinazioni e attività.

Elementi MSBuild

Descrive i concetti generali su cui si basa il formato di file di MSBuild e le interazioni fra le singole parti del formato.

Proprietà di MSBuild

Introduce proprietà e insiemi di proprietà. Le proprietà sono coppie di chiave/valore che possono essere utilizzate per configurare le compilazioni

Destinazioni di MSBuild

Spiega come raggruppare le attività in un dato ordine e consentire che determinate sezioni del processo di compilazione vengano richiamate dalla riga di comando.

Attività di MSBuild

Mostra come creare un'unità di codice eseguibile che MSBuild può utilizzare per eseguire operazioni di compilazione atomiche.

Condizioni di MSBuild

Descrive come utilizzare l'attributo Condition in un elemento MSBuild.

Concetti avanzati relativi a MSBuild

Illustra la suddivisione in batch, l'esecuzione di trasformazioni, il monitoraggio (o registrazione), la compilazione e altre tecniche avanzate.

Risorse aggiuntive per MSBuild

Elenca risorse della community e di supporto che consentono di ottenere ulteriori informazioni su MSBuild.

Riferimenti