Share via


MSBuild

Microsoft Build Engine è una piattaforma per la compilazione di applicazioni. Questo motore, anche noto come 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. Visual Studio usa MSBuild, ma esso non dipende da Visual Studio. Richiamando msbuild.exe nel progetto o nel file della soluzione, è possibile orchestrare e compilare prodotti in ambienti in cui Visual Studio non è installato.

Visual Studio utilizza MSBuild per caricare e compilare progetti gestiti. I file di progetto in Visual Studio (con estensione CSPROJ, VBPROJ, VCXPROJ e altre) contengono il codice XML di MSBuild che viene eseguito quando si compila un progetto usando l'IDE. I progetti di Visual Studio importano tutte le impostazioni e tutti i processi di compilazione necessari per eseguire il normale lavoro di sviluppo standard, ma è possibile estenderli o modificarli in Visual Studio o mediante un editor XML.

Per informazioni su MSBuild per C++, vedere MSBuild (Visual C++).

Negli esempi seguenti viene illustrato quando è possibile eseguire le compilazioni tramite la riga di comando di MSBuild, anziché l'IDE di Visual Studio.

  • Visual Studio non è installato.

  • Si desidera usare la versione a 64 bit di MSBuild. Questa versione di MSBuild non è solitamente necessaria, ma consente l'accesso di MSBuild a una maggiore quantità di memoria.

  • Si desidera eseguire una compilazione in più processi. Tuttavia, è possibile usare l'IDE per ottenere lo stesso risultato nei progetti di C++ e C#.

  • Si intende modificare il sistema di compilazione. Ad esempio, può essere necessario consentire le azioni seguenti:

    • Pre-elabora i file prima che arrivino al compilatore.

    • Copiare gli output di compilazione in un'altra posizione.

    • Creare file compressi dagli output di compilazione.

    • Eseguire un passaggio di post-elaborazione. Ad esempio, può essere utile contrassegnare un assembly con una versione diversa.

È possibile scrivere codice nell'IDE di Visual Studio ed eseguire le compilazioni tramite MSBuild. In alternativa, è possibile compilare il codice nell'IDE in un computer di sviluppo e usare una riga di comando di MSBuild per compilare il codice integrato da più sviluppatori.

Nota

È possibile usare Team Foundation Build per compilare, testare e distribuire l'applicazione automaticamente.Il sistema di compilazione può eseguire le compilazioni automaticamente quando gli sviluppatori archiviano il codice, ad esempio come parte di una strategia di integrazione continuata, o secondo a una pianificazione, ad esempio una compilazione notturna di test di verifica compilazione.In Team Foundation Build il codice viene compilato tramite MSBuild.Per altre informazioni, vedere Compilare l'applicazione.

Nel presente argomento viene fornita una panoramica di MSBuild. Per un'esercitazione introduttiva, vedere Procedura dettagliata: utilizzo di MSBuild.

Contenuto dell'argomento

  • Uso di MSBuild a un prompt dei comandi

  • File di progetto

    • Proprietà

    • Elementi

    • Attività

    • Destinazioni

  • Log di compilazione

  • Uso di MSBuild in Visual Studio

  • Multitargeting

Uso 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 altre 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.

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 elementi di base del formato di file dei progetti 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 usate per configurare le compilazioni. Per dichiarare le proprietà è necessario creare, come figlio di un elemento PropertyGroup, un elemento con lo stesso nome della proprietà. Tramite il codice seguente, ad esempio, viene creata una proprietà denominata BuildDir con un valore Build.

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

È possibile definire una proprietà in modo condizionale aggiungendo un attributo Condition nell'elemento. Il contenuto degli elementi condizionali viene elaborato solo se la condizione risulta essere true. Nell'esempio seguente viene definito l'elemento Configuration, se non è stato ancora definito.

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

Nel file di progetto, per fare riferimento a una proprietà si usa la sintassi $(PropertyName). È possibile, ad esempio, fare riferimento alle proprietà degli esempi precedenti usando $(BuildDir) e $(Configuration).

Per altre informazioni sulle proprietà, vedere Proprietà di MSBuild.

Elementi

Gli elementi sono input nel sistema di compilazione e, in genere, rappresentano i file. Gli elementi sono raggruppati in tipi di elemento, in base a nomi di elemento definiti dall'utente. Tali tipi di elemento possono essere usati 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 è possibile fare riferimento ai tipi di elementi usando la sintassi @(ItemType). Ad esempio, per fare riferimento al tipo di elemento dell'esempio si utilizza la sintassi @(Compile).

In MSBuild, i nomi di elementi e attributi prevedono la distinzione tra maiuscole e minuscole. I nomi di proprietà, elementi e metadati, invece, non prevedono tale distinzione. Nell'esempio seguente viene creato il tipo di elemento Compile, comPile o con qualsiasi altra variazione di maiuscole o minuscole e viene assegnato a esso il valore "one.cs;two.cs".

<ItemGroup>
  <Compile Include="one.cs" />
  <comPile Include="two.cs" />
</ItemGroup>

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

Attività

Le attività sono unità di codice eseguibile usate 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 altre informazioni su come scrivere le attività, vedere Scrittura di attività.

MSBuild include attività comuni che è possibile modificare in base a requisiti specifici. Alcuni esempi sono Copy per eseguire la copia dei file, MakeDir per creare le directory e Csc per compilare i file di codice sorgente di Visual C#. Per l'elenco delle attività disponibili e delle relative informazioni sull'uso, 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 usati 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 altre 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 usare 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 altre informazioni sulle destinazioni, vedere Destinazioni di MSBuild.

Log di compilazione

È possibile registrare errori di compilazione, avvisi e messaggi sulla console o in un altro dispositivo di output. Per altre informazioni, vedere Recupero di log di compilazione con MSBuild e Registrazione a MSBuild.

Uso di MSBuild in Visual Studio

In Visual Studio viene usato 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 al prompt dei comandi, anche se Visual Studio non è installato, con risultati identici.

Per un'esercitazione sull'uso 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 2.0 in una piattaforma a 32 bit e compilare la stessa applicazione da eseguire in .NET Framework 4.5 in una piattaforma a 64 bit. 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 un Service Pack per la versione corrente di .NET Framework, è possibile destinare l'applicazione a esso.

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

Per altre informazioni, vedere Cenni preliminari sul 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 usando 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'IDE 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 raccolte di proprietà. Le proprietà sono coppie di chiave/valore che possono essere usate 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ò usare per eseguire operazioni di compilazione atomiche.

Condizioni di MSBuild

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

Concetti avanzati relativi a MSBuild

Illustra la suddivisione in batch, l'esecuzione di trasformazioni, il multitargeting e altre tecniche avanzate.

Registrazione a MSBuild

Descrive come registrare eventi, messaggi ed errori.

Risorse aggiuntive per MSBuild

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

Riferimenti