MSBuild

Microsoft Build Engine è una piattaforma per compilare applicazioni.Questo modulo, noto anche come MSBuild, fornisce uno Schema XML per un file di progetto che controlla come piattaforma di compilazione elabora e del software.Visual Studio utilizza MSBuild, ma non dipende da Visual Studio. Utilizzando msbuild.exe nel progetto o file di 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 o vbproj, e altri vcxproj) contengono il codice XML di MSBuild eseguito quando si compila un progetto utilizzando l'ide.I progetti di Visual Studio includono tutte le impostazioni e processi di compilazione necessari per eseguire il lavoro di sviluppo standard, ma è possibile estenderli o modificare da Visual Studio o un editor XML.

Negli esempi seguenti quando si eseguono compilazioni tramite la riga di comando di MSBuild anziché IDE di Visual Studio.

  • Visual Studio non è installato.

  • Si desidera utilizzare la versione a 64 bit di MSBuild.Questa versione MSBuild è in genere necessario, ma consente di accedere a MSBuild più memoria.

  • Si desidera eseguire una compilazione in più processi.Tuttavia, è possibile utilizzare l'ide di per ottenere lo stesso risultato nei progetti in C++ e, a partire da Visual Studio 2012, in c.

  • Per modificare il sistema di compilazione.Ad esempio, potrebbe essere necessario abilitare le azioni seguenti:

    • Elabora i file prima che raggiungano il compilatore.

    • Copiare gli output di compilazione in un punto diverso.

    • Creazione di espandere i file da output di compilazione.

    • Scegliere un passaggio di post-elaborazione.Ad esempio, è possibile contrassegnare un assembly con una versione diversa.

È possibile scrivere codice nell'IDE di Visual Studio ma si eseguono compilazioni tramite MSBuild.Come alternativa, è possibile compilare il codice nell'IDE nel computer di sviluppo ma utilizzare una riga di comando di MSBuild per compilare il codice non gestito che da più sviluppatori.

[!NOTA]

È possibile utilizzare Team Foundation Build automaticamente per compilare, testare e distribuire l'applicazione.Il sistema di compilazione può eseguire automaticamente le compilazioni quando gli sviluppatori archiviare il codice, ad esempio come parte di una strategia di integrazione continuata) o in base a una pianificazione, ad esempio una compilazione notturna di test BVT).Team Foundation Build compila il codice tramite MSBuild.Per ulteriori informazioni vedere Compilazione dell'applicazione.

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

In questo argomento

  • Utilizzo di MSBuild a un prompt dei comandi

  • File di progetto

    • Proprietà

    • Items

    • Attività

    • Destinazioni

  • Log di compilazione

  • Utilizzo di MSBuild in Visual Studio

  • Multitargeting

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.

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.Inoltre, il file di progetto consente agli sviluppatori di creare regole di compilazione riutilizzabili che possono essere inserite in file separati in modo da poter eseguire coerente le compilazioni nei 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.

Dd393574.collapse_all(it-it,VS.110).gifProprietà

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 crea una proprietà denominata BuildDir con un valore di Build.

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

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

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

Nel file di progetto, per fare riferimento a una proprietà si utilizza la sintassi $(NomeProprietà).Ad esempio, è possibile fare riferimento alle proprietà negli esempi precedenti utilizzando $(BuildDir) e $(Configuration).

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

Dd393574.collapse_all(it-it,VS.110).gifItems

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

In MSBuild, elementi e i nomi di attributo viene fatta distinzione tra maiuscole e minuscole.Tuttavia, la proprietà, elementi e i nomi di metadati non sono.Nell'esempio riportato di seguito il tipo di elemento Compile, comPile, o qualsiasi altra variazione dell'evento e fornisce il tipo di elemento del valore "one.cs; two.cs".

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

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.

Dd393574.collapse_all(it-it,VS.110).gifAttività

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 le attività comuni che è possibile modificare per soddisfare le proprie esigenze.Gli esempi sono Copia, la copia dei file, MakeDir, che crea directory e Csc, per compilare i 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.

Dd393574.collapse_all(it-it,VS.110).gifDestinazioni

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 migliorare la leggibilità e per 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 riferimenti di essere compilati, è possibile creare una destinazione che compila riferimenti e quindi eseguire tale destinazione da ogni punto di ingresso in cui ha richiesto.

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, le destinazioni possono essere utilizzati per descrivere relazioni reciproche ed eseguire analisi delle dipendenze in modo da poter ignorare intere sezioni del processo di compilazione per il database di destinazione viene aggiornato.Per ulteriori informazioni sulle destinazioni, vedere Destinazioni di MSBuild.

Log di compilazione

È possibile registrare errori di compilazione, avvisi e messaggi nella console o in un altro dispositivo di output.Per ulteriori informazioni, vedere Recupero di log di compilazione con MSBuild e Registrazione 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 di Visual Studio vengono riflesse in. file di *proj generato per ogni progetto.Visual Studio utilizza un'istanza di hosting di MSBuild per compilare progetti gestiti.Ciò significa che un progetto gestito può essere Visual Studio incorporato o a un prompt dei comandi (anche se Visual Studio non è installato e 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 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 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.

  • Se il Service Pack per la versione corrente di .NET Framework viene rilasciato, è possibile fare riferimento.

  • Multitargeting garantisce che un'applicazione utilizzi solo le funzionalità disponibili nel framework di destinazione e la piattaforma.

Per ulteriori 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 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 progetto 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 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, multitargeting e altre tecniche avanzate.

Registrazione a MSBuild

Viene descritto come registrare gli eventi di compilazione, i messaggi e gli errori.

Risorse aggiuntive per MSBuild

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

Riferimento